Qt-QLCDNumber显示类控件(26)
目录
描述
相关属性
使用
使用函数来倒计时的一些问题
描述
是⼀个专⻔⽤来显⽰数字的控件.类似于"⽼式计算器"的效果.
相关属性
ntValue | QLCDNumber 显⽰的数字值(int). |
value | QLCDNumber 显⽰的数字值(double). 和intValue是联动的.例如给value设为1.5,intValue的值就是2. |
digitCount | 显⽰⼏位数字. |
mode | 数字显⽰形式. 1. QLCDNumber::Dec :⼗进制模式,显⽰常规的⼗进制数字。 2. QLCDNumber::Hex :⼗六进制模式,以⼗六进制格式显⽰数字。 3. QLCDNumber::Bin :⼆进制模式,以⼆进制格式显⽰数字。 4. QLCDNumber::Oct :⼋进制模式,以⼋进制格式显⽰数字。 只有⼗进制的时候才能显⽰⼩数点后的内容. |
segmentStyle | 设置显⽰⻛格. 1. QLCDNumber::Flat :平⾯的显⽰⻛格,数字呈现在⼀个平坦的表⾯上。 2. QLCDNumber::Outline :轮廓显⽰⻛格,数字具有清晰的轮廓和阴影效 果。 3. QLCDNumber::Filled :填充显⽰⻛格,数字被填充颜⾊并与背景区分 开。 |
smallDecimalPoint | 设置⽐较⼩的⼩数点 |
需要注意的一点是这个
使用
这里我们实现一个简单的倒计时程序
这个控件一般来说都是和其他控件关联起来一起使用的,这里我们就和定时器关联起来使用了
声明
定义
使用函数来倒计时的一些问题
这里我们创建之后,在ui界面也可以直接改value的数值
注意这里的Qt程序默认是可以使用C++11 的,因为在之前配置过
因为QT不能直接使用sleep这个window里面提供的函数的,因此我们需要借助C++11里面的一个标准库来实现这个休眠操作
如下我们设置了自己的计算器,但是我们发现这里的显示是有大问题的,这里的程序并不是直接开始显示倒计时的,而是倒计10s后才显示的,并且显示为0,其实原因也很简单,就是阻塞了
如下,在构造函数中就阻塞住了
我们知道当创建一个新的线程的时候,主线程和新的线程并不会互相干扰,并且执行各自的操作,那么我们能不能用线程的方式来进行呢?至于QT中的线程操作的使用,其实就是和C++是一样的,Qt对其进行了沿用
如下我们进行实验,发现出现了异常了
Qt要求只能在主线程中修改界面,所以显然是不能这样做的
至于为什么界面可以一直维护,这也是一个很常见的编程手段