13 绘图
Qt的绘图系统Qt中的绘图和之前使用OpenCV时在图中进行绘图的方式差别还是很大的,在用OpenCV时,一般都是主动调用绘图函数就行了,但是在Qt中,如果要在控件上绘制东西,一般都得是在其绘图事件中进行绘制,并不能主动调用绘图函数。 Qt中针对不同的控件,绘图的方式区别很大 这些控件主要分为2类 继承自QWidget的控件:重写paintEvent,在此函数里面用QPainter进行绘图 Graphics View相关的控件:此类控件不会触发paintEvent,需要调用函数往场景中插入元素来显示 Qt的绘图系统主要包括2部分 QPainter绘图系统:绘制基本的点、线等形状组成自己需要的图形,得到的图形是不可交互操作的 Graphics View绘图系统:绘制复杂的组件化图形,每个图件是可选择、可交互的 1.QPainter绘图系统QPainter绘图系统主要包括以下几部分: QPainter类:用于进行绘图操作 QPaintDevice类:绘图设备的基类,每个可以用QPainter绘制的类,比如QWidget,QPixmap,...
15 Model View Delegate
Model-View-Delegate结构1.基本概念Qt中的Model-View-Delegate框架类似于一种前后端分离的架构,将数据的显示与获取进行了分离。其组成如下图所示: 2.Model2.1基本概念Model是Model-View-Delegate设计的模式的核心组件之一,它负责存储、检索、更新和操作数据,并通过接口与View和Delegate进行通信。下面详细介绍其概念和作用: 数据管理: Model类负责管理应用程序中的数据,Model类通常提供了方法来添加、删除、修改和查询数据,以便在应用程序中进行数据操作。 数据提供: Model类向视图(View)提供数据,以便在界面上显示。视图通过与Model类交互来获取所需的数据,并根据数据的变化来更新界面的显示。Model类通常实现了一些接口,如data()、setData()等,以便视图可以获取和更新数据。 通知机制: Model类通常实现了信号-槽机制或其他通知机制,以便在数据发生变化时通知视图进行更新。当数据发生变化时,Model类会自动发出相关信号(比如dataChanged,...
16 Qt的事件机制
Qt的事件机制 Qt是个事件驱动的编程框架,各种事件的产生和处理伴随着整个程序运行的主轴,因此搞懂事件处理机制非常重要。Qt的信号槽底层也是利用事件机制来实现的! 1.事件的定义1.1定义事件是由程序内部或外部产生的事情或某种动作的通称。比如用户按下键盘或鼠标,就会产生一个键盘事件或鼠标事件(这是由程序外部产生的事件);再如,当窗口第一次显示时,会产生一个绘制事件,以通知窗口需要重新绘制其自身,从而使该窗口可见(这是由程序内部产生的事件) 。 1.2事件与信号的区别 信号的发送者和接受者都是QObject派生类的对象,属于==对象-对象==之间的通信 事件通常来自底层的操作系统,或手动调用的。它的发送者是事件循环,接收者都是QObject派生类对象,属于==事件循环-对象==之间的通信。(本质上是操作系统-事件循环-对象 ...
18 控件 TableWidget
TableWidget1.初始化表格开发时一般在QT Designer 中拖拽一个QTableWidget到页面上,设置好布局后在UI页面对应的cpp文件中对表格进行操作即可,不过QTableWidget此时是空白的 1.1设置表头123456789101112QStringList headerList;headerList << QString::fromLocal8Bit("学号") << QString::fromLocal8Bit("姓名") << QString::fromLocal8Bit("语文") << QString::fromLocal8Bit("数学") << QString::fromLocal8Bit("英语")...
12 文件IO及路径
...
14 Qt多线程
...
17 定时器
定时器Qt有2种方式实现定时器的功能 1.使用QTimer类QTimer类非常简单使用,只需创建一个该对象,设置周期即可,在开启后,他会定时发出timeout()的信号,我们可以直接使用槽函数连接该信号。 1.1常用函数:123void setInterval(int msec); //设置周期void start(std::chrono::milliseconds msec);void start(void);//个人感觉它的start()应该是和QThread一样,创建了个新的线程 1.2使用信号槽123QTimer *timer = new QTimer(this);connect(timer, &QTimer::timeout, this, QOverload<>::of(&AnalogClock::update));timer->start(1000); 使用 定时器 +...
03 控件 QLabel
QLabel类QLabel用于显示文本、图像、动画,但不提供用户交互功能 继承关系:QLabel <- QFrame <- QWidget 1.常用API 方法 描述 void setText(const QString &text) 设置显示文本 void setAlignment(Qt::Alignment) 设置文本显示位置 void setFont(const QFont &) 设置字体 void setPixmap(const QPixmap &) 设置图片 void setMovie(QMovie *movie) 设置动图 void setNum(double num) 设置数字 void clear() 清空 2.显示图片123456789//1. 设置标签QLabel *label2 = new QLabel(this);label2->setGeometry(30, 70, 200, 200);//2. 设置图片QPixmap...
00 安装
安装及更新组件Qt是可以更新组件的,但是需要注意 1.Qt更新组件是,必须要添加正确的“档案网站”才行,不然就找不到。 https://mirrors.ustc.edu.cn/qtproject这个网站是可以用的 2.Qt 那个在线下载器速度很慢,需要用命令行启动这个软件,并且在后边加上这句话 --mirror https://mirrors.tuna.tsinghua.edu.cn/qt
02 关键类
Qt中的关键类Qt对C++标准库中的许多数据类型进行了重新封装,加快了其运行速度,并且也保证了其线程安全。 一、顺序容器1.QList类数组形式的线性表在Qt中的实现,提供了增、删、改、移动、替换等操作 支持用索引访问 插入、删除的时间复杂度是O(N) insert(),replace(),removeAt(),move(),swap(),append(),preappend(),removeFirst(),removeLast()...






