码上通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)样式设置
  • 支持文本绘制和字体设置
复制代码
原创不易,打字不易,截图不易,撸码不易,整理不易,走过路过,不要错过,欢迎点赞,收藏,转载,复制,抄袭,留言,灌水,请动动你的金手指,祝您早日实现财务自由。
相关推荐
Hhy_110711 分钟前
《C++深度解构06》手撕 string —— 从底层内存管理到深浅拷贝彻底吃透
c语言·开发语言·c++·学习·visual studio
starzy199016 分钟前
深入理解Scala函数定义:从方法到函数的类型跨越
开发语言·scala
starzy199022 分钟前
深入理解Scala递归函数:从栈溢出到尾调用优化
开发语言·scala
三*一32 分钟前
Mapbox‑GL JS 多边形折点编辑工具:实现原理、功能拆解与踩坑总结
开发语言·javascript·ecmascript
YSL07012443 分钟前
C++基础
开发语言·c++
若亦_1 小时前
Java中关于this的三种用法
java·开发语言·intellij-idea
2601_968793141 小时前
Python Requests 轻量自动化:无需浏览器,实现真人级账号浏览模拟
开发语言·python·自动化
eggwyw2 小时前
关于C++为什么不加入垃圾回收机制解析
开发语言·c++
来让爷抱一个13 小时前
Python 异步里混用同步库,事件循环被卡住的全过程
开发语言·python
心祭丫丫15 小时前
【每天一个 Python 小案例17】Python 实现通讯录
开发语言·人工智能·笔记·python·学习