码上通QT实战12--监控页面04-绘制6个灯珠及开关

1、前言

Qt中的绘图技术概述

Qt提供了多种绘图技术,适用于不同的应用场景。以下是Qt中常用的绘图技术及其特点。

QPainter绘图

QPainter是Qt中最基础的绘图类,支持在QPaintDevice子类(如QWidget、QImage、QPixmap)上绘制2D图形。

  • 支持绘制基本图形(点、线、矩形、椭圆等)
  • 支持变换(平移、旋转、缩放)
  • 支持画笔(QPen)和画刷(QBrush)样式设置
  • 支持文本绘制和字体设置

图形视图框架

Graphics View框架提供了管理大量自定义2D图形项的功能,适合需要处理大量图形元素的场景。

  • 基于场景(QGraphicsScene)-视图(QGraphicsView)-项(QGraphicsItem)架构
  • 支持项的选择、移动、缩放和旋转
  • 内置碰撞检测
  • 支持自定义图形项

OpenGL集成

Qt提供了对OpenGL的良好支持,适合需要高性能3D绘图的场景。

  • QOpenGLWidget:在Qt widget中嵌入OpenGL渲染
  • QOpenGLFunctions:提供OpenGL API访问
  • Qt Quick中的3D支持

Qt Quick绘图

Qt Quick提供了声明式的方式来创建用户界面,包括矢量图形绘制。

  • Canvas:类似HTML5 Canvas的绘图API
  • Shape:高性能矢量图形绘制
  • 粒子系统:创建视觉效果

Qt的绘图系统设计灵活,可以根据应用需求选择合适的技术组合,从简单的2D绘图到复杂的3D渲染都能胜任。

2、加油干

1、绘制部件

2、区域划分

在Qt中,嵌套布局指的是将多个布局管理器(如QHBoxLayoutQVBoxLayoutQGridLayout等)组合使用,形成层次化的界面结构。通过嵌套布局,可以实现复杂的界面设计,例如将水平布局嵌入垂直布局,或网格布局中嵌套其他布局。

嵌套布局的常见模式

水平与垂直布局嵌套

将水平布局嵌入垂直布局,或反之,适用于需要分组排列控件的场景。

网格布局嵌套

在网格布局的单元格中嵌入其他布局,适合需要对齐多行多列控件的场景。

布局比例控制

使用setStretchFactor()分配子布局或控件的拉伸比例,确保窗口缩放时界面协调。

cpp 复制代码
#include <QApplication>
#include <QVBoxLayout>
#include <QHBoxLayout>
#include <QPushButton>
#include <QLabel>

int main(int argc, char *argv[]) {
    QApplication app(argc, argv);
    QWidget window;

    QVBoxLayout *mainLayout = new QVBoxLayout(&window);
    QHBoxLayout *topLayout = new QHBoxLayout;
    QHBoxLayout *bottomLayout = new QHBoxLayout;

    mainLayout->addLayout(topLayout);
    mainLayout->addLayout(bottomLayout);

    topLayout->addWidget(new QLabel("Username:"));
    topLayout->addWidget(new QLineEdit);
    bottomLayout->addWidget(new QLabel("Password:"));
    bottomLayout->addWidget(new QLineEdit);

    window.setLayout(mainLayout);
    window.show();
    return app.exec();
}

这里的布局比较细致,需要好好适应研究一下。

3、提升部件

在Qt框架中,提升部件(Promoted Widgets)是一种将基础控件(如QWidget、QPushButton等)转换为自定义派生类的方法。通过这种方式,可以在Qt Designer中直接使用自定义类,而无需手动编写代码创建实例。通过提升部件,Qt Designer的界面设计与代码逻辑实现高效结合,提升开发效率。提升部件的作用

复用性:将自定义控件封装为可重复使用的组件。

可视化设计:在Qt Designer中直接拖放基础控件,并通过提升机制替换为自定义类。

简化开发:避免手动实例化自定义控件,减少代码量

4、运行测试

5、小结

QPainter是Qt中最基础的绘图类,支持在QPaintDevice子类(如QWidget、QImage、QPixmap)上绘制2D图形。

  • 支持绘制基本图形(点、线、矩形、椭圆等)
  • 支持变换(平移、旋转、缩放)
  • 支持画笔(QPen)和画刷(QBrush)样式设置
  • 支持文本绘制和字体设置
复制代码
原创不易,打字不易,截图不易,撸码不易,整理不易,走过路过,不要错过,欢迎点赞,收藏,转载,复制,抄袭,留言,灌水,请动动你的金手指,祝您早日实现财务自由。
相关推荐
用户805533698034 天前
不止三件套:QObject 属性系统全关键字与运行时反射!
c++·qt
xcyxiner4 天前
DicomViewer (vcpkg Windows和ubuntu编译)7
qt
Quz9 天前
QML Hello World 入门示例
qt
xcyxiner12 天前
DicomViewer (dcmtk读取dcm文件)5
qt
xcyxiner13 天前
DicomViewer (后台线程处理文件)4
qt
xcyxiner13 天前
DicomViewer (添加模型类)3
qt
xcyxiner14 天前
DicomViewer (目录调整) 2
qt
xcyxiner14 天前
dcmtk vtk vtk-dicom(gdcm) 编译(debug) v2
qt
LDR00616 天前
Type-C 快充全面升级!LDR6601 赋能个人护理便携电机,重塑剃须刀 / 理发器新体验
c语言·开发语言
雪碧聊技术16 天前
Tree.js是什么?一文讲透
开发语言·javascript·ecmascript