本节对应的视频讲解:B_站_视_频
https://www.bilibili.com/video/BV1zG411s7LG
QPushButton
是 Qt
中的按钮,通常用于响应用户的点击,然后执行相应的操作
1. 讲课风格
1.1 调节字体大小
-
放大笔记字体
包括笔记正文和左侧导航栏,方便在手机上观看的小伙伴
-
放大代码区字体大小
方便在手机上观看的小伙伴
1.2 如何讲解?
- 首先大概看下笔记目录,明确本节课要讲什么,让大家做到心里有数
- 然后看下代码运行的效果,有一个直观的效果展示,再讲解细节的知识点,就很容易理解了
- 最后深入到每个小功能,讲解
1.3 如何写代码
- 对于一些写代码的 “体力活”,比如拖放几个按钮,修改按钮的
name
,修改按钮显示的文字,这些我会提前准备好,免得浪费大家时间 - 对于核心代码,我会一行行现场写
1.4 观看视频小技巧
- 每一讲的视频,都设置了章节分段,方便小伙伴查看本讲有几个小段,还可以快速定位到对应的小段
2. 属性和方法
按钮除了可以设置显示文本之外,还可以设置图标
2.1 文本
可以获取和设置按钮上显示的文本
// 获取和设置按钮的文本
QString text() const
void setText(const QString &text)
该属性,既可以在 Qt
设计师右侧的属性窗口中修改,也可以在代码中动态地获取和修改
2.2 图标
可以获取和设置按钮上显示的图标
// 获取和设置按钮的图标
QIcon icon() const
void setIcon(const QIcon &icon)
该属性,既可以在 Qt 设计师右侧的属性窗口中修改,也可以在代码中动态地获取和修改
2.3 样式表
样式表可以设置包括文本颜色、背景色、边框、字体等很多样式
// 获取和设置样式表
// 这是继承自QWidget类的属性和方法
// 只要继承自QWidget类的控件,都有该属性
QString styleSheet() const
void setStyleSheet(const QString &styleSheet)
样式表既可以在 Qt 设计师右侧的属性窗口中修改,也可以在代码中动态地获取和修改
2.4 信号
按钮在按下和抬起的过程中,会发射多个信号。
// 当按钮被点击(按下并抬起)时,发送该信号,其中带有一个默认参数
// 对于QPushButton 通常不需要传递这个默认参数
// 对于可选中/取消选中的按钮,比如复选框QCheckBox、单选框QRadioButton 可以通过该参数,获取其是否选中
void clicked(bool checked = false);
// 当按钮被按下时,发送该信号
void pressed();
// 当按钮被抬起时,发送该信号
void released();
3. 案例
该案例演示,如何设置按钮的文本和图标,以及信号的使用,如下:
3.1 布局
在 UI
设计师界面,拖拽对应的控件,修改显示的文字、控件的 name
,然后完成布局
3.2 添加图标
首先添加资源文件,并添加两个图标文件(方法在上一节已经进行了详细的介绍)
然后为按钮添加图标,如下:
3.3 添加样式表
在右侧的属性窗口中,或者在按钮上右键->【改变样式表…】,都可以打开编辑样式表的对话框
如下,设置了按钮的字体颜色和背景渐变:
3.4 代码实现
// 1、设置文本和图标
void Widget::on_btnStart_clicked()
{
QString s = ui->btnStart->text();
if(s == "启动") {
// 设置文本和字体
ui->btnStart->setText("停止");
ui->btnStart->setFont(QFont("黑体", 16));
// 设置图标和图标大小
ui->btnStart->setIcon(QIcon(":/icon/stop.ico"));
ui->btnStart->setIconSize(QSize(48, 48));
} else {
ui->btnStart->setText("启动");
ui->btnStart->setFont(QFont("黑体", 12));
ui->btnStart->setIcon(QIcon(":/icon/start.ico"));
ui->btnStart->setIconSize(QSize(32, 32));
}
}
// 2、使能禁能
void Widget::on_btnConnect_clicked()
{
QString s = ui->btnConnect->text();
if(s == "连接") {
ui->btnConnect->setText("断开连接");
ui->btnSend->setEnabled(true);
} else {
ui->btnConnect->setText("连接");
ui->btnSend->setEnabled(false);
}
}
// 3、信号演示
// 按钮抬起时,会发射clicked信号
void Widget::on_btnSignal_clicked()
{
qDebug() << "clicked...";
}
// 按钮按下时,会发射pressed信号
void Widget::on_btnSignal_pressed()
{
qDebug() << "pressed...";
}
// 按钮抬起时,会发射released信号
void Widget::on_btnSignal_released()
{
qDebug() << "released...";
}
本节对应的视频讲解:B_站_视_频
https://www.bilibili.com/video/BV1zG411s7LG