1. QLabel
QLabel可以用来显示文本和图片,核心属性如下:
设置伙伴:
通过QLabel文本中携带“&字符”的方式,为文本设置快捷键。可以通过”alt+字符“的方式来触发快捷键,即触发QLabel通过设置buddy属性绑定的伙伴。
2. QLCDNumber
QLCDNumber是一个专门用来显示数字的控件,类似于老式计算器的效果
核心属性:
结合QTimer,我们就可以实现一个简单的倒计时效果:
2.1 Qt界面修改注意事项
(1)不能在构造函数中,通过循环去修改lcdNumber的数值来实现,因为这会导致构建无法执行完毕,界面是不会正常显示的。
(2)在主线程中另起一个线程+sleep的方式同样不能实现倒计时效果,因为Qt 中规定, 任何对于 GUI 上内容的操作, 必须在 主线程 中完成.。像 Widget 构造函数,以及 connect 连接的 slot 函数, 都是在主线程中调用的,而我们自己创建的线程则不是。
当我们自己的线程中尝试对界⾯元素进⾏修改时,Qt 程序往往会直接崩溃。
这样的约定主要是因为GUI中的状态往往是牵一发动全身的,修改一个地方,就需要同步的对其他内容进行调整。
比如调整了某个元素的尺寸,就可能影响到内部的文字位置,或者其他元素的位置。这里一连串的修改,都是需要按照一定的顺序来完成的。
由于多线程执行的顺序无法保障,因此Qt从根本上禁止了其他线程修改GUI状态,避免后续的一系列问题。
3. QProgressBar(进度条)
QProgressBar表示一个进度条:
核心属性:
在实际开发中, 进度条的取值, 往往是根据当前任务的实际进度来进⾏设置的。比如需要读取⼀个很⼤的文件,就可以获取⽂件的总的大小,和当前读取完毕的大小, 来设置进度条的比例。由于上⾯我们介绍了 Qt 禁⽌在其他线程修改界⾯, 因此进度条的更新往往也是需要搭配定时器来完成。通过定时器周期触发信号,主线程调⽤对应的 slot 函数.。再在 slot 函数中对当前的任务进度进行计算,并更新进度条的界面效果。
4. Calendar Widge(日历)
![](https://i-blog.csdnimg.cn/direct/413f1d2c9c944a6183142addca65806a.png)
![](https://i-blog.csdnimg.cn/direct/4502b5d644de44119ab786320fc0ecb8.png)