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 代码各部分文件

主函数

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

 窗体头文件 Qt_Button.h

#pragma once

#include <QtWidgets/QMainWindow>
#include "ui_Qt_Button.h" #include <QButtonGroup> //按钮分组类头文件
# pragma execution_character_set("utf-8") // 解决中文乱码问题 class Qt_Button : public QMainWindow
{
Q_OBJECT public:
Qt_Button(QWidget *parent = Q_NULLPTR); public slots:
void RecvGenderID(int id); //接收性别单选按钮分组信号
void RecvStatusID(int id); //接收状态单选按钮分组信号 private slots:
void on_radioButton0to19_toggled(bool checked); void on_radioButton20to39_toggled(bool checked); void on_radioButton40to59_toggled(bool checked); void on_radioButton60to_toggled(bool checked); void on_pushButton_clicked(); void pushButton_3_clicked(); // 添加 connect() 触发动作 声明 void on_pushButton_2_clicked(); // 添加 测试 on_<控件ID>_<控件函数>() 触发动作 声明 private:
Ui::Qt_ButtonClass ui; //按钮分组
QButtonGroup *m_pGenderGroup; //性别单选按钮分组
QButtonGroup *m_pStatusGroup; //状态单选按钮分组
};

 窗体实体部分

#include "Qt_Button.h"

#include <QDebug>               //调试输出类
#include <QMessageBox> //消息框类 Qt_Button::Qt_Button(QWidget *parent)
: QMainWindow(parent)
{
ui.setupUi(this); //新建性别虚拟分组,并添加按钮和id
m_pGenderGroup = new QButtonGroup(this);
m_pGenderGroup->addButton(ui.radioButtonMan, 0); //男
m_pGenderGroup->addButton(ui.radioButtonWoman, 1); //女 //新建状态虚拟分组,并添加按钮和id
m_pStatusGroup = new QButtonGroup(this);
//不同分组的 id 是无关的,不冲突
m_pStatusGroup->addButton(ui.radioButtonBang, 0); //棒棒哒
m_pStatusGroup->addButton(ui.radioButtonMeng, 1); //萌萌哒
m_pStatusGroup->addButton(ui.radioButtonYao, 2); //该吃药了 //关联两个分组的信号和槽
connect(m_pGenderGroup, SIGNAL(buttonClicked(int)), this, SLOT(RecvGenderID(int)));
connect(m_pStatusGroup, SIGNAL(buttonClicked(int)), this, SLOT(RecvStatusID(int))); connect(ui.pushButton_3, SIGNAL(clicked()), this, SLOT(pushButton_3_clicked()));
//connect(groupBox, SIGNAL(buttonClicked(int)), this, SLOT(RecvStatusID(int)));
} //接收性别分组的id
void Qt_Button::RecvGenderID(int id)
{
switch (id) {
case 0:
qDebug() << tr("性别:男1");
break;
case 1:
qDebug() << tr("性别:女2");
break;
default:
break;
}
}
//接收状态分组的id
void Qt_Button::RecvStatusID(int id)
{
switch (id) {
case 0:
qDebug() << tr("状态:棒棒哒1");
break;
case 1:
qDebug() << tr("状态:萌萌哒2");
break;
case 2:
qDebug() << tr("状态:该吃药了3");
break;
default:
break;
}
} // 年龄段 0 - 19
void Qt_Button::on_radioButton0to19_toggled(bool checked)
{
if (checked)
{
qDebug() << tr("年龄段:0-19");
}
else
{
qDebug() << tr("不是 0-19");
}
}
//年龄段 20-39
void Qt_Button::on_radioButton20to39_toggled(bool checked)
{
if (checked)
{
qDebug() << tr("年龄段:20-39");
}
else
{
qDebug() << tr("不是 20-39");
}
}
//年龄段 40-59
void Qt_Button::on_radioButton40to59_toggled(bool checked)
{
if (checked)
{
qDebug() << tr("年龄段:40-59");
}
else
{
qDebug() << tr("不是 40-59");
}
}
//年龄段 60 以上
void Qt_Button::on_radioButton60to_toggled(bool checked)
{
if (checked)
{
qDebug() << tr("年龄段:60 以上");
}
else
{
qDebug() << tr("不是 60 以上");
}
} //在单选按钮信号对应的槽函数之外,来获取单选按钮的状态
void Qt_Button::on_pushButton_clicked()
{
//结果字符串
QString strResult; //性别分组
int nGenderID = m_pGenderGroup->checkedId(); //获取被选中的 id
switch (nGenderID) {
case 0:
strResult += tr("性别:男\r\n");
break;
case 1:
strResult += tr("性别:女\r\n");
break;
default:
strResult += tr("性别:未选中\r\n");
break;
} //状态分组
int nStatusID = m_pStatusGroup->checkedId(); //获取被选中的 id
switch (nStatusID) {
case 0:
strResult += tr("状态:棒棒哒\r\n");
break;
case 1:
strResult += tr("状态:萌萌哒\r\n");
break;
case 2:
strResult += tr("状态:该吃药了\r\n");
break;
default:
strResult += tr("状态:未选中\r\n");
break;
} //年龄段四个按钮判断
if (ui.radioButton0to19->isChecked())
{
strResult += tr("年龄段:0-19\r\n");
}
else if (ui.radioButton20to39->isChecked())
{
strResult += tr("年龄段:20-39\r\n");
}
else if (ui.radioButton40to59->isChecked())
{
strResult += tr("年龄段:40-59\r\n");
}
else if (ui.radioButton60to->isChecked())
{
strResult += tr("年龄段:60 以上\r\n");
}
else
{
strResult += tr("年龄段:未选中\r\n");
} //strResult 获取信息完毕,弹窗显示
QMessageBox::information(this, tr("综合信息"), strResult);
} //测试按钮 手动关联
void Qt_Button::pushButton_3_clicked(){ qDebug() << tr("这是一个connect()测试"); //测试 } // 测试按钮 自动关联
void Qt_Button::on_pushButton_2_clicked()
{
qDebug() << tr("这是一个on_pushButton_2_clicked测试"); //测试
//ui.radioButtonYao->setChecked(true); }

  

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. ModBus通信协议的【主从模式】

    主从模式 (1) 至少且只有一个主机,其他的都是从机 (2) 不管任何时候,从机都不能主动向主机发送数据 (3) 主机具有访问从机的权限,从机不可以主动访问从机,任何一次数据交换,都要由主机发起 (4 ...

  2. 【高并发解决方案】7、HAProxy安装和配置

    简介 HAProxy提供高可用性.负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费.快速并且可靠的一种解决方案. HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要 ...

  3. 微信服务器配置令牌(Token)

    实现步骤: 第一步:填写服务器配置 登录微信公众平台官网后,在公众平台后台管理页面 - 开发者中心页,点击“修改配置”按钮,填写服务器地址(URL).Token和EncodingAESKey,其中UR ...

  4. HTML--SVG基础

    一 SVG概述 SVG是Scalable Vector Graphics的缩写,即缩放式矢量图形; 优点: 1.使用编辑器即可编辑图形; 2.基于XML,SVG图形可以被很容易的搜索,脚本化和压缩; ...

  5. JS window与document

    开头语:嗯~~~~~~~~~ 正文如下 一.window window是Javascript中的最高级对象,它是document.location和history对象的父对象.正因为window是一个 ...

  6. js keyup、keypress和keydown事件

    js keyup.keypress和keydown事件都是有关于键盘的事件 当一个按键被pressed 或released在每一个现代浏览器中,都可能有三种客户端事件. keydown event k ...

  7. Apex单元测试

    单元测试类 Salesforce中为Apex语言提供了完整的单元测试流程,包括单元测试类.测试的运行和结果分析等. 单元测试类是一种特殊的Apex类,基本语法和普通的Apex类一样. 单元测试类的结构 ...

  8. jmeter 压力测试

    转自: https://blog.csdn.net/cbzcbzcbzcbz/article/details/78023327 Jmeter压力测试简单教程(包括服务器状态监控) 2017年09月18 ...

  9. C# 异步编程4 async与await 异步程序开发

    随着C#异步程序开发系列的深入,你会发现编写异步程序越发简单.事物的发展就是这样的规律,从简单到复杂再到简单. 在C# 5.0中我们可以通过async与await关键字实现快捷的异步程序开发,如下: ...

  10. [20171124]手工使用Seed_Database.dfb和Seed_Database.ctl建库.txt

    [20171124]手工使用Seed_Database.dfb和Seed_Database.ctl建库.txt --//昨天看yueli34的帖子,链接http://www.itpub.net/thr ...