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 ...
随机推荐
- hexo主题选择和配置
之前用next主题,发现文章标题都是h2,不利于seo,想着通过改模板改成h1的,发现很繁琐.今天发现,通过下载指定版本的next后,标题自动是h1的. 参考网页https://notes.iissn ...
- MinGW开发工具的安装(还有visual-mingw)
MinGW是Minimalist GNU for Windows的缩写,是把linux下的GNU开发工具包移植到windows的项目之一.和Cygwin不一样的是,MinGW不提供linux的posi ...
- C# keybd_event用法 模拟键盘输入
最近有业务需求,需要模拟键盘输入,所以了解了一下C#中keybd_event函数的用法.该函数能够产生WM_KEYUP或WM_KEYDOWN消息,即可以触发键盘事件. 函数引用如下: [DllImpo ...
- Bit error testing and training in double data rate (ddr) memory system
DDR PHY interface bit error testing and training is provided for Double Data Rate memory systems. An ...
- 自己动手编写一个VS插件(七)
作者:朱金灿 来源:http://blog.csdn.net/clever101 继续开发VS插件.今天在添加ATL控件时出现一个"未能返回新代码元素"的错误,如下图: 解决办法是 ...
- QWidget居中显示(qt窗口坐标原点是在”左上角”的,有图)
转载请说明出处, 并附上原文链接http://blog.csdn.net/qq907482638/article/details/72189014. 问题描述 在Qt学习过程中,在让QDialog居中 ...
- Maven环境下Poi的使用
Poi的使用方法,网上还是挺多的,官网也有教程. 附一个比较全的: http://www.cnblogs.com/vTree/archive/2011/11/30/2268721.html 需要说明的 ...
- 如何停止处于stopping状态的windows服务(使用taskkill)
工作中有时需要启动和停止windows service,有时候会出现服务处于stopping或者starting的状态,但是,在services界面中,start service/stop servi ...
- qt线程(转)----这篇很专业!
本文档是自己所整理的一份文档,部分是原创,还转贴了网上的一此资料(已经标明了),(难点是多线程的编写),是有源代码的,大家可以作为参考,用到的知识是视频采集,压缩解压(xvid),实时传输(jrtp) ...
- API Hook基本原理和实现
API Hook基本原理和实现 2009-03-14 20:09 windows系统下的编程,消息message的传递是贯穿其始终的.这个消息我们可以简单理解为一个有特定意义的整数,正如我们看过的老故 ...