本节对应的视频讲解:B_站_视_频

https://www.bilibili.com/video/BV1zG411s7LG

QPushButtonQt 中的按钮,通常用于响应用户的点击,然后执行相应的操作

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

【QT开发笔记-基础篇】| 第二章 常用控件 | 2.2 按钮 QPushButton相关推荐

  1. 【QT开发笔记-基础篇】| 第二章 常用控件 | 2.12 表格控件 QTableWidget

    本节对应的视频讲解:B_站_链_接 QTableWidget 是 Qt 中的表格控件,可以行列的形式来展示数据 1. 属性和方法 QTableWidget 有很多属性和方法,完整的可查看帮助文档. 在 ...

  2. 【QT开发笔记-基础篇】| 第二章 常用控件 | 2.3 标签 QLabel

    本节对应的视频讲解:B_站_链_接 https://www.bilibili.com/video/BV1wB4y1B7b7 QLabel 是 Qt 中的标签类,通常用于显示提示性的文本,也可以显示图像 ...

  3. 【QT开发笔记-基础篇】| 第二章 常用控件 | 2.9 滑动条 QSlider

    本节对应的视频讲解:B_站_链_接 https://www.bilibili.com/video/BV1BT411g791 QSlider 是滑动条控件,滑动条可以在一个范围内拖动,并将其位置转换为整 ...

  4. 【QT开发笔记-基础篇】| 第二章 常用控件 | 2.11 列表框 QListWidget

    本节对应的视频讲解:B_站_链_接 https://www.bilibili.com/video/BV1gd4y1Q7Bw Qt 中的列表框控件,对应的类是 QListWidget 它用于显示多个列表 ...

  5. 【QT开发笔记-基础篇】| 第五章 绘图QPainter | 5.1 效果演示、技术点

    本节对应的视频讲解:B_站_视_频 https://www.bilibili.com/video/BV14P4y197pi Qt 中绘图用到的类是 QPainter,可以实现点.线.矩形.圆形.多边形 ...

  6. 【QT开发笔记-基础篇】| 第一章 QT入门 | 1.2 搭建Qt开发环境

    本节对应的视频讲解:B_站_链_接 https://www.bilibili.com/video/BV1Pr4y1x7fh Qt 开发主要有两种开发环境 Qt Creator 它是 Qt 官方提供的开 ...

  7. 【QT开发笔记-基础篇】| 第一章 QT入门 | 1.1 为什么要学习Qt

    本节对应的视频讲解:B_站_链_接 https://www.bilibili.com/video/BV1334y1776z Qt 是一个跨平台的 C++ 图形用户界面应用程序框架 Qt 为应用程序开发 ...

  8. 【QT开发笔记-基础篇】| 第一章 QT入门 | 1.4 项目构建流程

    本节对应的视频讲解:B_站_链_接 https://www.bilibili.com/video/BV1cW4y1y7Lw 在上一节课中,我们新建了第一个 Qt 工程,其中包括 5 个文件: Hell ...

  9. 【QT开发笔记-基础篇】| 第五章 绘图QPainter | 5.2 界面布局

    本节对应的视频讲解:B_站_视_频 https://www.bilibili.com/video/BV1fR4y1k7Kt 上节课,初步展示了本章要实现的效果.本节课开始,就从零新建工程,把效果一一实 ...

最新文章

  1. 关于光耦隔离通讯中限流电阻的选取问题
  2. 使用dd查看磁盘前4个扇区的内容
  3. NYOJ 915 +-字符串
  4. c语言二维数组参数传入,C语言二维数组、参数传递的理解
  5. linux平台及windows平台mysql重启方法
  6. 担保债务凭证(Collateralized Debt Obligation,简称CDO) CLO/CBO
  7. win+mysql自动备份吗_Windows下mysql自动备份的最佳方案
  8. set集合以及知识点补充
  9. java有push方法么_[Java教程]js中push和join方法使用介绍
  10. Windows API 逐个逐个学(3)----Windows系统基本服务API GetSystemDirectory
  11. 黑苹果系统升级OC引导升级简单
  12. iOS让屏幕保持常亮,不自动锁屏
  13. mysql查询所有男生中姓王的_MySQL的查询练习
  14. 傅里叶变换究竟是什么玩意儿 以及 这些公式究竟是怎么来的 引子
  15. android 常用短语的添加,LazyBoard – 常用短语键盘,快速输入很长的句子
  16. 【Python】基于Python的复杂网络传播动力学及其可视化
  17. macOS虚拟机安装(VMware)
  18. C++基于ATL工程编写ActiveX控件
  19. 被窝玩手机还不如来跟我学3Dmax
  20. [附源码]计算机毕业设计JAVA基于JSP健身房管理系统

热门文章

  1. 如何通过公网访问私有网盘,天翼网关如何端口转发
  2. 怎么使用php制作课程表,利用WPS表格制作课程表全攻略
  3. 李白无事街上走,提壶去买酒。遇店加一倍,见花喝一斗,五遇花和店,喝光壶中酒,试问李白壶中原有多少斗酒?(使用for循环结构编程实现)
  4. 日产汽车CEO西川广人批评雷诺未支持董事会调整措施
  5. 袋鼠云CTO宁海元(花名江枫)在2018杭州云栖大会袋鼠云数据智能专场 演讲内容...
  6. Asp.Net中MVC中的Log4Net配置及运用
  7. 英雄何为:《新神榜:杨戬》的颠倒与失控
  8. ZCU102基于Petalinux挂载NVMe SSD
  9. 外贸邮件推送平台,外贸开发信邮件推送平台,外贸EDM推送平台,如何选择?
  10. 万字博文教你python爬虫XPath库【详解篇】