免费舆情网站直接打开海口seo整站
目录
QLCDNumber
倒计时小程序
相关属性
QProgressBar
进度条小程序
相关设置
QLCDNumber
QLCDNumber是Qt框架中用于显示数字或计数值的小部件。通常用于显示整数值,例如时钟、计时器、计数器等
常用属性
| 属性 | 说明 | 
| intValue | QLCDNumber显示的初始值(int类型) | 
| value |   QLCDNumber显示的初始值(double),和intValue是联动的 例如给value设置为1.5,intValue的值就是2 设置value和intValue的API是display,不是setValue或setIntValue  | 
| digitCount | 显示几位数字,可大致控制LCDNumber的大小 | 
| mode |   数字显示形式 
 只有十进制的时候才能显示小数点后内容  | 
| segmentStyle |   设置显示风格 
  | 
| smallDecimalPoint | 设置比较小的小数点 | 
倒计时小程序
倒计时可以使用QTimer,信号和槽实现
QTimer可以通过start()函数设置周期发出timeout信号
void start(int msec);参数单位是毫秒,start(1000)代表1秒发出一次timeout信号
程序思路如下:
- 创建QTimer对象
 - 关联timeout信号和相应的槽函数
 - 启动QTimer
 - 槽函数中修改LCDNumber的值,当倒计时为0时,关闭QTimer
 
代码如下:
#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);//设置QLCDNumber的初始值ui->lcdNumber->display(10.00);//绑定信号和槽函数//信号使用QTimer(计时器)的timeout信号timer = new QTimer(this);connect(timer, &QTimer::timeout, this, &Widget::handle);//计时器还需要启动timer->start(10);//参数是设定周期,按周期发出timeout信号}void Widget::handle()
{double value = ui->lcdNumber->value();if(value <= 0.0){timer->stop();//倒计时为0时停止计时器return;}ui->lcdNumber->display(value - 0.01);//计时器-1
} 
相关属性
segmentStyle,可以设置显示风格
- QLCDNumber::Flat 平面的显示风格,数字呈现在一个平坦的表面上
 - QLCDNumber::OutLine 轮廓显示风格,数字具有清晰的轮廓和阴影效果
 - QLCDNumber::Filled 填充显示风格,数字被填充颜色并与背景区分开
 

digitCount,可以设置显示几位数

QProgressBar
QProgressBar是Qt框架中用于显示进度的小部件。通常用于表示任务完成的进度或操作的进展情况。
常用属性
| 属性 | 说明 | 
| minimum | 进度条最小值 | 
| maximum |   进度条最大值  | 
| value | 进度条当前值 | 
| alignment |   文本在进度条中的对齐方式 
  | 
| textVisible |   进度条的数字是否可见  | 
| orientation |   进度条的方向是水平还是垂直  | 
|   invertAppearance  | 是否是朝向反方向增长进度 | 
| textDirection | 文本的朝向 | 
| format |   展示的数字格式 
  | 
进度条小程序
程序思路如下:
- 初始化QProgressBar对象
 - 创建QTimer对象
 - 关联timeout信号和相应的槽函数
 - 启动QTimer
 - 槽函数中修改QProgressBar的值,当进度条满时,关闭QTimer
 
#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);//设置进度条的起始和终止ui->progressBar->setMinimum(0);ui->progressBar->setMaximum(100);//设置定时器timer = new QTimer(this);//连接信号和槽函数connect(timer, &QTimer::timeout, this, &Widget::handle);//启动定时器,周期为0.1秒timer->start(100);
}void Widget::handle()
{int value = ui->progressBar->value();if(value >= 100){timer->stop();return;}ui->progressBar->setValue(value + 1);
} 

相关设置
setAlignment()//设置进度条数字的对齐方式 

setOrientation()//设置进度条的方向是水平还是垂直 
- setOrientation(Qt::Orientation::Vertical) 垂直方向
 - setOrientation(Qt::Orientation::Horizontal) 水平方向
 

setInvertAppearance()//设置进度条是否反向增长,true是从右往左,false是从左往右 

上述两个程序都使用了QTimer的timeout信号
读者可能会想到创建一个新的线程,更改倒计时或者进度条的值,但Qt是不允许的
Qt中,界面有一个专门的线程负责维护更新(主线程)
对于GUI来说,内部包含了很多的隐藏状态,Qt为了保证修改界面的过程中,线程安全是不会受到影响的,Qt禁止了其他线程直接修改界面
所以Qt要求,对界面的修改都必须在主线程中完成,所以不允许创建新的线程对界面进行修改
QCalendarWidget
QCalendarWidget是Qt框架中用于显示日历和处理日期选择的小部件。允许用户查看和选择日期,并支持多种日期显示格式和交互功能
常用属性
| 属性 | 说明 | 
| selectDate | 当前选中的日期 | 
| minimumDate |   最小日期  | 
| maximumDate | 最大日期 | 
| firstDayOfWeek |   每周的第一天(日历的第一列)是周几  | 
| gridVisible |   是否显示日历的边框  | 
| selectionMode |   是否允许选择日期  | 
|   navigationBarVisible  | 日历上方标题是否显示 | 
| horizontalHeaderFormat | 日历上方标题显示的日期格式 | 
| verticalHeaderFormat |   日历第一列显示的内容格式  | 
| dateEditEnabled | 是否允许日期被编辑 | 
重要信号
| 信号 | 说明 | 
| selectionChanged(const QDate&) | 当选中的日期发生改变时发出 | 
| activated(const QDate&) |   当双击一个有效日期或按下回车键时发出,形参是一个QDate类型,保存了当前选中的日期  | 
| currentPageChanged(int, int) | 当当前页面的年份月份改变时发出,形参是改变后的新年份和月份 | 
示例:selectionChanged信号发出
Qt Designer设计的界面如下:

添加selectionChanged信号的槽函数
void Widget::on_calendarWidget_selectionChanged()
{ui->label->setText(ui->calendarWidget->selectedDate().toString());
} 
程序运行如下

