QT中获取选中的radioButton的两种方法(动态取得控件的objectName之后,对名字进行比较)
QT中获取选中的radioButton的两种方法
QT中要获取radioButton组中被选中的那个按钮,可以采用两种如下两种办法进行:
方法一:采用对象名称进行获取
代码:

1 QRadioButton* pbtn = qobject_cast<QRadioButton*>(ui->BG->checkedButton());
2 QString name = pbtn->objectName();
3 if(!QString::compare(name, "radioButton"))
4 {
5 QMessageBox::information(this, "Tips", "red chosed!", QMessageBox::Ok);
6 }
7 else if(!QString::compare(name, "radioButton_2"))
8 {
9 QMessageBox::information(this, "Tips", "blue chosed!", QMessageBox::Ok);
10 }
11 else
12 {
13 QMessageBox::information(this, "Tips", "black chosed!", QMessageBox::Ok);
14 }

该代码片段中,首先使用qobject_cast将checkedButton()函数返回的QAbstractionButton转换为其子类类型QRadioButton.然后,获取被选中按钮的对象名。这可以通过获取objectName这个属性获取。再稍作判断即可得知结果。注:BG是手动添加的QGroupButton类型,radioButton和radioButton_2,radioButton_3都是UI中添加的radioButton控件。
方法二:通过button的ID来获取
代码:
位于构造函数中的代码(初始选中第一个按钮):
1 ui->BG->setId(ui->radioButton, 0);
2 ui->BG->setId(ui->radioButton_2, 1);
3 ui->BG->setId(ui->radioButton_3, 2);
4 ui->radioButton->setChecked(true);
这一步是必须的,必须先设置好radiobutton组中各个按钮的ID值,否则会导致程序崩溃。
响应信号的槽函数或其他函数中的代码:

1 int a = ui->BG->checkedId();
2 switch(a)
3 {
4 case 0:
5 QMessageBox::information(this, "Tips", "Red chosed!", QMessageBox::Ok);
6 break;
7 case 1:
8 QMessageBox::information(this, "Tips", "blue chosed!", QMessageBox::Ok);
9 break;
10 case 2:
11 QMessageBox::information(this, "Tips", "black chosed!", QMessageBox::Ok);
12 break;
13 default:
14 break;
15 }

两种方法具有同样的效果。
http://www.cnblogs.com/csuftzzk/archive/2013/01/14/2859320.html
QT中根据ID设置radio按钮
前面提到,有两种方法可以提取到radio按钮组中当前被选中的按钮(看这里)。这一篇中,我们根据ID来获取按钮。
代码:
ui->BG->setId(ui->radioButton, 0);
ui->BG->setId(ui->radioButton_2, 1);
ui->BG->setId(ui->radioButton_3, 2);
ui->radioButton->setChecked(true);
QRadioButton* pbtn = qobject_cast<QRadioButton*>(ui->BG->button(0));
QMessageBox::information(this, "Warning", pbtn->objectName(), QMessageBox::Ok);
在这个简单的示例中,注意一些变量:radioButton, radioButton_2, radioButton_3是三个QRadioButton类型的控件变量,BG是QButtonGroup类型的变量。
我们首先使用QButtonGroup的类方法setId设置好各个radioButton的ID。这一步是必要的,因为默认的情况下其ID是不确定的。如果不设置的话,后来的代码将会导致程序崩溃。setChecked()方法设置第一个radioButton为默认选中。
第二步中,我们通过ui->BG->button(ID)来选中指定ID的按钮。注意,button()函数返回的是QAbstractionButton类型的指针。我们用qobject_cast<>来将其转换为QRadioButton类型的指针。这个转换是可行的,因为QRadioButton是QAbstractionButton的子类。至此,通过ID获取选中状态的RadioButton过程完成。
注:使用QT Creator进行UI设计时,没有QButtonGroup类型的控件直接使用的。不过,有另外一种解决办法:将要成组的radioButton一起选中,然后右键选择“指定到按钮组”,新建一个按钮组并命名即可。当然也可以用代码进行手动添加。 http://www.cnblogs.com/csuftzzk/archive/2013/01/14/2859846.html
QT中获取选中的radioButton的两种方法(动态取得控件的objectName之后,对名字进行比较)的更多相关文章
- QT中获取选中的radioButton的两种方法
QT中要获取radioButton组中被选中的那个按钮,可以采用两种如下两种办法进行: 方法一:采用对象名称进行获取 代码: 1 QRadioButton* pbtn = qobject_cast&l ...
- Java 获取*.properties配置文件中的内容 ,常见的两种方法
import java.io.InputStream; import java.util.Enumeration; import java.util.List; import java.util.Pr ...
- JAVA中获取文件MD5值的四种方法
JAVA中获取文件MD5值的四种方法其实都很类似,因为核心都是通过JAVA自带的MessageDigest类来实现.获取文件MD5值主要分为三个步骤,第一步获取文件的byte信息,第二步通过Messa ...
- js如何实现动态的在表格中添加和删除行?(两种方法)
js如何实现动态的在表格中添加和删除行?(两种方法) 一.总结 1.table元素有属性和一些方法(js使用) 方法一:添加可通过在table的innerHTML属性中添加tr和td来实现 tab.i ...
- java 获取键盘输入常用的两种方法
java 获取键盘输入常用的两种方法 方法1: 通过 Scanner Scanner input = new Scanner(System.in); String s = input.nextLine ...
- 在Java Web程序中使用监听器可以通过以下两种方法
之前学习了很多涉及servlet的内容,本小结我们说一下监听器,说起监听器,编过桌面程序和手机App的都不陌生,常见的套路都是拖一个控件,然后给它绑定一个监听器,即可以对该对象的事件进行监听以便发生响 ...
- PHP中获取文件扩展名的N种方法
PHP中获取文件扩展名的N种方法 从网上收罗的,基本上就以下这几种方式: 第1种方法:function get_extension($file){substr(strrchr($file, '.'), ...
- ant中调用外部ant任务的两种方法
国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...
- Python 使用 xlwings 往 excel中写入一列数据的两种方法
1.准备一个二维列表,然后再range后面不指定任何选项,可以输出该二维列表中数据在一列中显示,如下代码: # -*- coding:utf-8 -*- import xlwings as xw li ...
随机推荐
- TensorFlow 下 mnist 数据集的操作及可视化
from tensorflow.examples.tutorials.mnist import input_data 首先需要连网下载数据集: mnsit = input_data.read_data ...
- 阿里云centos7.2自己安装mysql5.7远程不能访问解决方案
版权声明:转载也行 https://blog.csdn.net/u010955892/article/details/72774920 最近,无意中看到阿里云服务器降价,所以一时手痒,买了一年的服务器 ...
- 【50.88%】【Codeforces round 382B】Urbanization
time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandard o ...
- burp suite中国乱码的解决方案
于http的response还有经常出现乱码,其实解决的办法很easy 首先点击Options标签, 然后找到display 找到http message display watermark/2/te ...
- 全分布式的Hadoop初体验
背景 之前的时间里对 Hadoop 的使用都是基于学长所搭建起的实验环境的,没有完整的自己部署和维护过,最近抽时间初体验了在集群环境下装机.配置.运行的全过程,梳理总结到本文中. 配置 内存:8G C ...
- Windows多线程系列
来自CSDN - 秒杀多线程系列.覆盖了Windows系统的线程同步机制.对于理解各种锁以及多线程典型场景很有帮助.
- AVL 树的插入、删除、旋转归纳
参考链接: http://blog.csdn.net/gabriel1026/article/details/6311339 1126号注:先前有一个概念搞混了: 节点的深度 Depth 是指从根 ...
- android4.0 USB Camera示例(四)CMOS
上一页下一页说usb camera uvc标准 顺便说说CMOS一起做 操作基本一至, 前HAL在那里我已经提供了层CMOS相关接口 JNIEXPORT jint JNICALL Java_com_d ...
- 从源码角度看MySQL memcached plugin——0.大纲
本系列文章介绍MySQL memcached plugin插件.剖析已经完成.先把链接弄好,内容会陆续补上. 大纲如下: 系统结构和引擎初始化(已完成) 线程模型和连接的状态机 containers表 ...
- HDU-3839-Ancient Messages(DFS)
Problem Description In order to understand early civilizations, archaeologists often study texts wri ...