常用控件
QPushButton
属性 | 说明 |
---|---|
text | 按钮中的文本 |
icon | 按钮中的图标 |
iconSize | 按钮中图标的尺寸 |
shortCut | 按钮对应的快捷键 |
autoRepeat | 按钮是否会重复触发。当鼠标左键按住不放时,如果设为true,则会持续产生鼠标点击事件;如果设为false,则必须释放鼠标,再次按下鼠标时才能产生点击事件。 |
autoRepeatDelay | 重复触发的延时时间,按住按钮多久之后,开始重复触发 |
autoRepeatInterval | 重复触发的周期 |
设置图标
设置快捷键:
QRadioButton
QRadioButton 表示单选按钮,选择一个,其他就不能被选择。
属性 | 说明 |
---|---|
checkable | 是否能选中 |
checked | 是否已经被选中,checkable是checked的前提条件 |
autoExclusive | 是否排他。选中一个按钮之后是否会取消其他按钮的选中。对于QRadioButton来说默认就是排他的。 |
由于QRadioButton是单选按钮,具有排他性,所以下面五个按钮中,只能选择一个:
此时就需要使用 QButtonGroup 对单选按钮进行分组:
QCheckBox
QCheckBox 表示复选按钮,可以选择多个。
QLable
QLable 可以用来显示文本和图片
属性 | 说明 |
---|---|
text | QLabel 中的文本 |
textFormat | 文本的格式(Qt::PlainText 纯文本、Qt::RichText 富文本) Qt::RichText 富文本(支持html标签)、Qt::MarkdownText markdown格式(老版本Qt不支持) Qt::AutoText 根据文本内容自动决定文本格式 |
pixmap | QLabel内部包含的图片 |
scaledContents | 设为true表示内容自动拉伸填充QLabel、设为false则不会自动拉伸 |
alignment | 对齐方式。可以设置水平和垂直方向如何对齐 |
wordWrap | 设为true内部的文本会自动换行,false则不会换行 |
indent | 设置文本缩进。水平和垂直方向都生效 |
margin | 内部文本和边框之间的边距,四个方向 |
openExternalLinks | 是否允许打开一个外部的链接(当QLabel文本内容包含url的时候) |
buddy | 给QLabel关联一个“伙伴”,这样点击QLabel时就能激活对应的伙伴。 例如伙伴如果是一个QCheckBox,那么该QCheckBox就会被选中 |
显示文本:
显示图片:
(图片如何插入可到上一文章查看)
如果图片太小或太大,不能完全显示,我们就可以使用自动拉伸:ui->label->setScaledContents(true);
现在就有个新问题了,当我们调整窗口大小时,图片还是固定的长度,也就是QLabel不会随着窗口的调整而变化。现在我们先添加代码,再做解释:
先到widget.h文件中添加:
再到widget.cpp中添加(鼠标点击刚刚写的resizeEvent,按alt+回车键即可在widget.cpp创建好函数):
这里的 resizeEvent 是一个用来处理窗口大小变化的事件,当窗口大小发生变化时,就会触发 resizeEvent,为了响应这种事件,我们就可以按照我们的需求(图片随着窗口大小变,而图片又是自动拉伸在Label中,所以让label随着窗口变即可)来重写 resizeEvent() 方法。
设置对齐方式:
设置换行
设置缩进和边距
设置伙伴关系
例如下图,当Label 和 radioButton 绑定了伙伴关系之后,通过快捷键 Alt + A 就可以选单选按钮选项一了。(使用 & 加上一个字符来表示快捷键)
QProgressBar
QProgressBar 表示一个进度条(最小值到最大值通常设置为0%-100%)。
属性 | 说明 |
---|---|
minimum | 进度条最小值 |
maximum | 进度条最大值 |
value | 进度条当前值 |
alignment | 文本在进度条中的对齐方式。 Qt::AlignLeft:左对齐 Qt::AlignRight:右对齐 Qt::AlignCenter:居中对齐 Qt::AlignJustify:两端对齐 |
textVisible | 进度条的数字是否可见 |
orientation | 进度条的方向是水平还是垂直 |
invertAppearance | 是否朝反方向增长进度 |
textDirection | 文本的朝向 |
format | 展示的数字格式。 %p:表示进度的百分比(0-100) %v:表示进度的数值(0-100) %m:表示剩余时间(单位毫秒) %t:表示总时间(单位毫秒) |
下面通过一个例子来演示进度条的使用:
widget.h中:
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QTimer>
QT_BEGIN_NAMESPACE
namespace Ui {
class Widget;
}
QT_END_NAMESPACE
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = nullptr);
~Widget();
void handle(); //槽函数
private:
Ui::Widget *ui;
QTimer* timer; //定时器
};
#endif // WIDGET_H
widget.cpp中:
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
timer = new QTimer(this);
connect(timer,&QTimer::timeout,this,&Widget::handle);
//连接后启动计时器(每100ms触发timeout信号)
timer->start(100);
}
Widget::~Widget()
{
delete ui;
}
void Widget::handle()
{
//获取当前进度条的值
int value = ui->progressBar->value();
if(value >= 100)
{
//进度条到达100 停止
timer->stop();
return;
}
//设置进度条
ui->progressBar->setValue(value+1);
}
QTimer 是软件定时器,父类为QObject。QTimer 的主要功能是设置以毫秒为单位的定时周期,然后惊醒连续定时或单次定时。启动定时器后,会触发 timeout() 信号,与之关联的槽函数就会定时处理。
修改进度条颜色:
QCalendarWidget
QCalendarWidget 表示一个日历。
属性 | 说明 |
---|---|
selectedDate | 当前选中的日期 |
minimumDate | 最小日期 |
maximumDate | 最大日期 |
firstDayOfWeek | 每周的第一天(日历的第一列)是周几 |
gridVisible | 是否显示表格的边框 |
selectionMode | 是否允许选择日期 |
navigationBarVisible | 日历上方标题是否显示 |
horizontalHeaderFormat | 日历上方显示的日期格式 |
verticalHeaderFormat | 日历第一列显示的内容格式 |
dateEditEnable | 是否允许日期被编辑 |
重要信号
信号 | 说明 |
---|---|
selectionChanged(const QDate&) | 当前选中的日期发生改变时发出 |
activated(const QDate&) | 当双击一个有效的日期或者按下回车键时发出,形参是一个QDate类型,保存了选中的日期 |
currentPageChanged(int, int) | 当年月份改变时发出,形参表示改变后的新年份和月份 |