11 容器控件
容器控件 容器类控件用于存放别的控件,之前在设计UI界面时,把所有控件都放到最顶层的QWidget中然后布局,这样做的缺点是整体布局非常麻烦,因此可以使用容器类控件,把场上所有的控件分成几部分分别放入不同的容器中布局,然后在顶层窗口中对容器再布局就行了。 Qt中能用作容器的控件主要有上面几种,下面就简单介绍一下。 1.QWidget前面说到过QWidget是所有可视化窗口的基类,如果不指定父对象的话他就是一个独立的窗口;如果指定父对象,它就是作为一个容器而存在于父对象内。默认情况下QWidget是完全空白的。 关于这些属性大部分都有对应的API函数, 在属性名前加 set即可, 大家可以自己从 QWidget这个类里边搜索, 并仔细阅读关于这些函数的参数介绍。 2.QFrameQFrame继承QWidget,在外观上QWidget完全空白,而QFrame能够设置边框的阴影、线宽、形状等。 3.QGroupBoxQGroupBox继承QWidget,在这种类型的窗口中可以绘制边框、给窗口指定标题,...
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()...







