1按钮类的控件

逐个解释一下各个用途:
(1)按压按钮 QPushButton
最基本的按钮,点击该按钮通常是通知程序进行一个操作,比如弹个窗、下一步、保存、退出等等,这是经常用到的,操作系统里的对话框里几乎全部都有这种按压按 钮,5.1.2 节详细讲解按压按钮。

(2)工具按钮 QToolButton
工具按钮通常都不是一个,是一排放置在工具栏 QToolBar 里面,作为快捷按钮来用,比如 Qt 设计师的工具栏:

(3)单选按钮 QRadioButton
单选按钮通常是多个放在一块,表示互斥的一组选项,只能选择其中一个来填写,比如一个人性别有男、女,只能选择一个,而不能同时是男的又是女的,5.1.3 节详 细讲解单选按钮。

(4)复选框 QCheckBox
与单选按钮不同,复选框通常表示多个可以同时存在的选项,比如一个人可以同时多个爱好,比如读书、看电影、爬山、游泳等,5.1.4 节介绍复选框。

(5)命令链接按钮 QCommandLinkButton
这是 Qt 仿造 Vista 里的命令链接按钮引入的扁平风格按钮,点击这个按钮一般意味着打开新的功能窗口或网站链接等,5.1.5 节介绍这个命令链接按钮。

(6)标准按钮盒 QDialogButtonBox 
标准按钮盒通常用于对话框程序,举例来说,我们常见的保存询问对话框里面有“保存”、“丢弃”、“取消”三个标准按钮,确认对话框有 “OK”“Cancel”等标准按钮,Qt 将这些典型的按钮做成标准按钮盒,并将相应的信号加以封装,方便程序员使用。这个标准按钮盒等到对话框相关章节再详细 介绍,这里只贴张图尝鲜看看:

项目例程

运行效果

1 新建项目

2 建好后 修改调试平台

3 窗体控件信息

4 代码各部分文件

主函数

  1. #include "Qt_Button.h"
  2. #include <QtWidgets/QApplication>
  3. # pragma execution_character_set("utf-8") // 解决中文乱码问题
  4.  
  5. int main(int argc, char *argv[])
  6. {
  7. QApplication a(argc, argv);
  8. Qt_Button w;
  9. w.show();
  10. return a.exec();
  11. }

 窗体头文件 Qt_Button.h

  1. #pragma once
  2.  
  3. #include <QtWidgets/QMainWindow>
  4. #include "ui_Qt_Button.h"
  5.  
  6. #include <QButtonGroup> //按钮分组类头文件
  7. # pragma execution_character_set("utf-8") // 解决中文乱码问题
  8.  
  9. class Qt_Button : public QMainWindow
  10. {
  11. Q_OBJECT
  12.  
  13. public:
  14. Qt_Button(QWidget *parent = Q_NULLPTR);
  15.  
  16. public slots:
  17. void RecvGenderID(int id); //接收性别单选按钮分组信号
  18. void RecvStatusID(int id); //接收状态单选按钮分组信号
  19.  
  20. private slots:
  21. void on_radioButton0to19_toggled(bool checked);
  22.  
  23. void on_radioButton20to39_toggled(bool checked);
  24.  
  25. void on_radioButton40to59_toggled(bool checked);
  26.  
  27. void on_radioButton60to_toggled(bool checked);
  28.  
  29. void on_pushButton_clicked();
  30.  
  31. void pushButton_3_clicked(); // 添加 connect() 触发动作 声明
  32.  
  33. void on_pushButton_2_clicked(); // 添加 测试 on_<控件ID>_<控件函数>() 触发动作 声明
  34.  
  35. private:
  36. Ui::Qt_ButtonClass ui;
  37.  
  38. //按钮分组
  39. QButtonGroup *m_pGenderGroup; //性别单选按钮分组
  40. QButtonGroup *m_pStatusGroup; //状态单选按钮分组
  41. };

 窗体实体部分

  1. #include "Qt_Button.h"
  2.  
  3. #include <QDebug> //调试输出类
  4. #include <QMessageBox> //消息框类
  5.  
  6. Qt_Button::Qt_Button(QWidget *parent)
  7. : QMainWindow(parent)
  8. {
  9. ui.setupUi(this);
  10.  
  11. //新建性别虚拟分组,并添加按钮和id
  12. m_pGenderGroup = new QButtonGroup(this);
  13. m_pGenderGroup->addButton(ui.radioButtonMan, 0); //男
  14. m_pGenderGroup->addButton(ui.radioButtonWoman, 1); //女
  15.  
  16. //新建状态虚拟分组,并添加按钮和id
  17. m_pStatusGroup = new QButtonGroup(this);
  18. //不同分组的 id 是无关的,不冲突
  19. m_pStatusGroup->addButton(ui.radioButtonBang, 0); //棒棒哒
  20. m_pStatusGroup->addButton(ui.radioButtonMeng, 1); //萌萌哒
  21. m_pStatusGroup->addButton(ui.radioButtonYao, 2); //该吃药了
  22.  
  23. //关联两个分组的信号和槽
  24. connect(m_pGenderGroup, SIGNAL(buttonClicked(int)), this, SLOT(RecvGenderID(int)));
  25. connect(m_pStatusGroup, SIGNAL(buttonClicked(int)), this, SLOT(RecvStatusID(int)));
  26.  
  27. connect(ui.pushButton_3, SIGNAL(clicked()), this, SLOT(pushButton_3_clicked()));
  28. //connect(groupBox, SIGNAL(buttonClicked(int)), this, SLOT(RecvStatusID(int)));
  29. }
  30.  
  31. //接收性别分组的id
  32. void Qt_Button::RecvGenderID(int id)
  33. {
  34. switch (id) {
  35. case 0:
  36. qDebug() << tr("性别:男1");
  37. break;
  38. case 1:
  39. qDebug() << tr("性别:女2");
  40. break;
  41. default:
  42. break;
  43. }
  44. }
  45. //接收状态分组的id
  46. void Qt_Button::RecvStatusID(int id)
  47. {
  48. switch (id) {
  49. case 0:
  50. qDebug() << tr("状态:棒棒哒1");
  51. break;
  52. case 1:
  53. qDebug() << tr("状态:萌萌哒2");
  54. break;
  55. case 2:
  56. qDebug() << tr("状态:该吃药了3");
  57. break;
  58. default:
  59. break;
  60. }
  61. }
  62.  
  63. // 年龄段 0 - 19
  64. void Qt_Button::on_radioButton0to19_toggled(bool checked)
  65. {
  66. if (checked)
  67. {
  68. qDebug() << tr("年龄段:0-19");
  69. }
  70. else
  71. {
  72. qDebug() << tr("不是 0-19");
  73. }
  74. }
  75. //年龄段 20-39
  76. void Qt_Button::on_radioButton20to39_toggled(bool checked)
  77. {
  78. if (checked)
  79. {
  80. qDebug() << tr("年龄段:20-39");
  81. }
  82. else
  83. {
  84. qDebug() << tr("不是 20-39");
  85. }
  86. }
  87. //年龄段 40-59
  88. void Qt_Button::on_radioButton40to59_toggled(bool checked)
  89. {
  90. if (checked)
  91. {
  92. qDebug() << tr("年龄段:40-59");
  93. }
  94. else
  95. {
  96. qDebug() << tr("不是 40-59");
  97. }
  98. }
  99. //年龄段 60 以上
  100. void Qt_Button::on_radioButton60to_toggled(bool checked)
  101. {
  102. if (checked)
  103. {
  104. qDebug() << tr("年龄段:60 以上");
  105. }
  106. else
  107. {
  108. qDebug() << tr("不是 60 以上");
  109. }
  110. }
  111.  
  112. //在单选按钮信号对应的槽函数之外,来获取单选按钮的状态
  113. void Qt_Button::on_pushButton_clicked()
  114. {
  115. //结果字符串
  116. QString strResult;
  117.  
  118. //性别分组
  119. int nGenderID = m_pGenderGroup->checkedId(); //获取被选中的 id
  120. switch (nGenderID) {
  121. case 0:
  122. strResult += tr("性别:男\r\n");
  123. break;
  124. case 1:
  125. strResult += tr("性别:女\r\n");
  126. break;
  127. default:
  128. strResult += tr("性别:未选中\r\n");
  129. break;
  130. }
  131.  
  132. //状态分组
  133. int nStatusID = m_pStatusGroup->checkedId(); //获取被选中的 id
  134. switch (nStatusID) {
  135. case 0:
  136. strResult += tr("状态:棒棒哒\r\n");
  137. break;
  138. case 1:
  139. strResult += tr("状态:萌萌哒\r\n");
  140. break;
  141. case 2:
  142. strResult += tr("状态:该吃药了\r\n");
  143. break;
  144. default:
  145. strResult += tr("状态:未选中\r\n");
  146. break;
  147. }
  148.  
  149. //年龄段四个按钮判断
  150. if (ui.radioButton0to19->isChecked())
  151. {
  152. strResult += tr("年龄段:0-19\r\n");
  153. }
  154. else if (ui.radioButton20to39->isChecked())
  155. {
  156. strResult += tr("年龄段:20-39\r\n");
  157. }
  158. else if (ui.radioButton40to59->isChecked())
  159. {
  160. strResult += tr("年龄段:40-59\r\n");
  161. }
  162. else if (ui.radioButton60to->isChecked())
  163. {
  164. strResult += tr("年龄段:60 以上\r\n");
  165. }
  166. else
  167. {
  168. strResult += tr("年龄段:未选中\r\n");
  169. }
  170.  
  171. //strResult 获取信息完毕,弹窗显示
  172. QMessageBox::information(this, tr("综合信息"), strResult);
  173. }
  174.  
  175. //测试按钮 手动关联
  176. void Qt_Button::pushButton_3_clicked(){
  177.  
  178. qDebug() << tr("这是一个connect()测试"); //测试
  179.  
  180. }
  181.  
  182. // 测试按钮 自动关联
  183. void Qt_Button::on_pushButton_2_clicked()
  184. {
  185. qDebug() << tr("这是一个on_pushButton_2_clicked测试"); //测试
  186. //ui.radioButtonYao->setChecked(true);
  187.  
  188. }

  

Qt 编程指南 4 按钮的更多相关文章

  1. Qt 编程指南 3_1 按钮弹窗手动和自动关联示例

    触发的两种模式 connect() 和 on_控件ID_控件函数(参数) 两者优缺点对比: 虽然 Qt 有比较好用的自动关联大法,但自动关联不是万能的,尤其是涉及到多个窗体的时候,比如 A 窗体私有按 ...

  2. Qt 编程指南 4 按钮2 打开网页和文件夹

    功能:  按键打开文件夹和网页 效果: 教程 1 添加两个链接按钮   分别命名 commandLinkButtonFolder 和  commandLinkButtonWeb 2 创建项目 改变调试 ...

  3. Qt 编程指南

    Qt 编程指南 持续关注一本正在编写的Qt编程指南,期待作者早日完成创作.

  4. Qt 编程指南 3 信号和槽沟通

    https://qtguide.ustclug.org/ 1 信号和槽 所谓信号槽,简单来说,就像是插销一样:一个插头和一个插座.怎么说呢?当某种事件发生之后,比如,点击了一下鼠标,或者按了某个按键, ...

  5. Qt 编程指南10 QImage Mat QPixmap转换

      //示例 pushButtonOpenPicBig按钮clicked单击动作触发 void Qt_Window::on_pushButtonOpenPicBig_clicked() { strin ...

  6. Qt 编程指南 4 单行编辑控件

    从 Qt 设计师界面可以看到常用的 Qt 文本编辑和浏览控件,包括四个: 其中单行编辑控件 QLineEdit 和 普通文本编辑控件 QPlainTextEdit 都是针对最普通的 C++ 字符串编辑 ...

  7. Qt 编程指南 1 从Hello World开始

    1 简单的hello QT 注意项目和路径不要包含任何中文字符,特殊字符,空格. 只能有英文,数字,下划线,且不能数字开头. //helloqt.cpp #include <QtWidgets/ ...

  8. Qt 编程指南 9 软件打包

    Qt 官方开发环境使用的动态链接库方式,在发布生成的exe程序时,需要复制一大堆 dll,如果自己去复制dll,很可能丢三落四,导致exe在别的电脑 里无法正常运行.因此 Qt 官方开发环境里自带了一 ...

  9. Qt 编程指南 8 显示静态小图片和动态大图片

    显示控件概览 图片浏览示例 第一行是一个标签控件,objectName 为 labelShow,文本内容清空,因为是用来显示图片用的. 主界面第二行的控件是四个普通按钮 第一个按钮文本是 " ...

随机推荐

  1. Cordova - 彻底搞定IOS编译!

    操作系统:OSX10.14 XCode:10.1 Cordova:8.1.2 假设已经配置好了Cordova开发环境,Apple ID你也有,XCode也可以正常工作了,那么就可以继续看这篇文章了! ...

  2. Extjs 项目中常用的小技巧,也许你用得着(1)

    我在项目中遇到的一些知识点: 1.在GridPanel中显示图片,效果 对应的代码实现 { text: '是否启用', width: 80, // xtype: 'checkcolumn', data ...

  3. 随机漂浮图片、右侧上下浮动快捷栏JS

    随机漂浮图片JS: //公共脚本文件 main.js function addEvent(obj,evtType,func,cap){ cap=cap||false; if(obj.addEventL ...

  4. MySQL学习(五) UNION与UNION ALL

    UNION用于把来自许多SELECT语句的结果组合到一个结果集合中,也叫联合查询. SELECT ... UNION [ALL | DISTINCT] SELECT ... [UNION [ALL | ...

  5. 6.分析request_irq和free_irq函数如何注册注销中断(详解)

    上一节讲了如何实现运行中断,这些都是系统给做好的,当我们想自己写个中断处理程序,去执行自己的代码,就需要写irq_desc->action->handler,然后通过request_irq ...

  6. Kafka初入门简单配置与使用

    一 Kafka概述 1.1 Kafka是什么 在流式计算中,Kafka一般用来缓存数据,Storm通过消费Kafka的数据进行计算. 1)Apache Kafka是一个开源消息系统,由Scala写成. ...

  7. 【详细】【转】CentOS 7部署ASP.NET Core应用程序

    很早就看过关于net core部署在Linux上的文章,自己也曾亲自将项目部署在Linux上,今天看到这篇文章,为其格式之工整而转! 1.环境准备 网上看了一下,Linux云服务器还挺贵的,那就只好先 ...

  8. android recovery代码修改之原生建议

    我们都知道recovery升级的时候,是根据升级脚本updater-script里面的函数,去一步步执行的,比如mount,format等相关的操作,有时候我们需要增加一些自己特殊的更新的接口,这时候 ...

  9. JS笔记(三):数组、函数、类

    (一) 数组 //创建数组 var the_array = [1,2,3,4,'5'] console.log(the_array[0]) //读取索引为0的数据 the_array[5] = '赋值 ...

  10. 移动端上拉加载,下拉刷新效果Demo

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...