当前位置: 首页 > article >正文

QT模块--GUI和QtWidgets

一、GUI

QtGui 模块是 Qt 的一个核心模块,它提供了与图形用户界面相关的低级功能。尽管它的名字中包含 “GUI”,但它实际上并不直接提供具体的窗口小部件(widgets)。相反,QtGui 提供了底层的支持,这些支持对于创建和管理图形界面来说至关重要。下面是一些 QtGui 模块提供的主要功能:

  • 绘图系统QPainterQPixmapQImage 和 QPicture 等类允许开发者在屏幕上或任何其他设备上进行绘制。

  • 字体处理:通过 QFont 和 QFontMetrics 类来设置文本样式并测量其尺寸。

  • 图像处理:支持多种图像格式的加载、保存及转换等操作。

  • 事件机制:虽然具体的 GUI 事件通常由 QtWidgets 处理,但 QtGui 定义了所有类型的事件,并且提供了基础的事件分发机制。

  • 屏幕和显示器管理:包括多显示器支持等功能。

  • 输入法框架:使得应用程序能够与系统输入法集成,从而更好地支持国际化的文本输入。

示例绘图(.h文件)

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QPoint>

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

protected:
    void mousePressEvent(QMouseEvent *event) override;
    void mouseMoveEvent(QMouseEvent *event) override;
    void mouseReleaseEvent(QMouseEvent *event) override;
    void paintEvent(QPaintEvent *event) override;

private:
    Ui::MainWindow *ui;
    QPoint lastPoint;
    bool scribbling;
};

#endif // MAINWINDOW_H

(.cpp文件)

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QPainter>
#include <QMouseEvent>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
    , scribbling(false)
{
    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::mousePressEvent(QMouseEvent *event)
{
    if (event->button() == Qt::LeftButton) {
        lastPoint = event->pos();
        scribbling = true;
    }
}

void MainWindow::mouseMoveEvent(QMouseEvent *event)
{
    if ((event->buttons() & Qt::LeftButton) && scribbling) {
        QPainter painter(this);
        painter.setPen(QPen(Qt::black, 3, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin));
        painter.drawLine(lastPoint, event->pos());
        lastPoint = event->pos();
        update();  // 触发 paintEvent 重绘
    }
}

void MainWindow::mouseReleaseEvent(QMouseEvent *event)
{
    if (event->button() == Qt::LeftButton && scribbling) {
        scribbling = false;
    }
}

void MainWindow::paintEvent(QPaintEvent *event)
{
    // 默认绘制行为
    QWidget::paintEvent(event);

    // 如果你希望保存绘制内容而不只是临时显示,
    // 可以在这里实现更复杂的逻辑。
}

 

二、QtWidgets 模块

 QtWidgets 模块则专注于提供一系列丰富的预定义用户界面组件,利用了 QtGui 提供的基础图形功能来构建更高级别的 UI 元素。

Qt 提供了丰富的标准控件,这些控件可以直接使用或作为自定义控件的基础。

  • QPushButton:按钮控件。

  • QCheckBox 和 QRadioButton:复选框和单选按钮。

  • QLineEdit 和 QTextEdit:文本输入控件。

  • QLabel:用于显示静态文本或图像。

  • QComboBox 和 QSpinBox:下拉列表和数字输入框。

  • QTreeViewQTableView 和 QListView:展示复杂数据结构的视图。

  • QProgressBar:进度条。

  • QSlider:滑块控件。

绘制与样式

Qt 提供了强大的绘图和样式功能,允许开发者创建美观的界面。

  • QPainter:提供了低级别的绘画功能,可以用来绘制形状、线条、文本等。

  • QStyle 和 QPalette:通过修改样式表(style sheets)或调色板(palette),您可以很容易地改变应用程序的整体外观而不必更改代码。

  • QSS (Qt Style Sheets):类似于 CSS,允许您通过样式表来定制控件的外观。

 开发工具

  • Qt Designer:一个可视化的设计工具,可以帮助快速创建复杂的用户界面而无需手动编写代码。可以联合其他的IDE进行开发,比如vs、pycharm,(不过例如使用pycharm时需要其他的工具转换设计生成的ui文件)

  • qmake:构建系统,简化项目配置过程。

  • Qt Creator:集成开发环境(IDE),包含代码编辑器、调试器、项目管理器等功能。(其中有专门拖拽控件的设计界面)


http://www.kler.cn/news/359896.html

相关文章:

  • Rust语言编程环境的安装
  • Codeforces Round 980 (Div. 2) A ~ D
  • 小程序将图片转换成base64格式
  • Mysql-事务(Transaction)详解
  • pod相关面试题总结(持续更新)
  • 【ARM】ARM架构参考手册_Part A CPU(1)
  • 【BUG】解决已安装anaconda的pycharm中jupyter服务器中出现的import jieba失败问题
  • SpringBoot启动报错java.nio.charset.MalformedInputException: Input length =1
  • SAP揭秘者-怎么查看SAP 版本及S4 HANA的版本
  • 开启RefCell debug_refcell feature查看借用冲突位置
  • PCL 基于中值距离的点云对应关系
  • linux模拟:chrony同步时间
  • 信创:推动信息技术应用创新的国产化之路
  • react18中在列表中如何使用useCallback进行渲染优化
  • 大模型的检索增强生成综述研究
  • 利用TLP185光耦合器增强电路隔离和信号完整性
  • (AtCoder Beginner Contest 375) 题解(下)
  • 408 10——42题
  • [英语单词] sk_under_memory_pressure
  • MySQL 初阶——多版本控制 MVCC