码上通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中,嵌套布局指的是将多个布局管理器(如QHBoxLayout、QVBoxLayout、QGridLayout等)组合使用,形成层次化的界面结构。通过嵌套布局,可以实现复杂的界面设计,例如将水平布局嵌入垂直布局,或网格布局中嵌套其他布局。

嵌套布局的常见模式

水平与垂直布局嵌套

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

网格布局嵌套

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

布局比例控制

使用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)样式设置
  • 支持文本绘制和字体设置
复制代码
原创不易,打字不易,截图不易,撸码不易,整理不易,走过路过,不要错过,欢迎点赞,收藏,转载,复制,抄袭,留言,灌水,请动动你的金手指,祝您早日实现财务自由。
相关推荐
小羊没烦恼!3 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
伞伞悦读3 天前
【第38期】Python 模块与包详解:import、from、模块搜索路径、包结构和 __init__
开发语言·python
C语言小火车3 天前
C/C++ 为什么需要编译器?
开发语言·c++
霍霍的袁3 天前
【C++】map 和 set 的使用 | 从用法到底层
开发语言·c++·学习·visual studio
孙启超3 天前
【AI开发之Rust】第 11 课:智能指针与内部可变性
开发语言·后端·rust
此生决int3 天前
深入理解C++系列(20)——C++11(下)
开发语言·c++
慧都小项3 天前
当边缘AI上产线:QtitanDocking 如何让工业 HMI 实现多视图协同
人工智能·qt·ui·边缘计算·qt6.3
CoderYanger3 天前
A.每日一题:835. 图像重叠
java·开发语言·程序人生·leetcode·面试·职场和发展·学习方法
伞伞悦读3 天前
【第37期】Python JSON 与配置详解:序列化、反序列化、嵌套结构和配置文件
开发语言·python·json
CCCCCCCCharlie3 天前
Linux进程控制四大核心操作
linux·开发语言