Qt之QButtonGroup简单使用
来源:互联网 发布:网络创新项目 编辑:程序博客网 时间:2024/06/06 05:55
在项目中遇到一个需求,根据外部条件来确定你的界面上显示多少个按钮。于是,写一个小程序测试了下,效果还可以。
主要用到QButtonGroup类,需要包含头文件,接着申请一个按钮数组对象QButtonGroup *buttonGroup,所有的按钮在ui中定义好了。
下面贴代码:
.h文件:
#include <QWidget>#include <QButtonGroup>#include <QDebug>namespace Ui {class SwitchButtonWidget;}class SwitchButtonWidget : public QWidget{ Q_OBJECTpublic: explicit SwitchButtonWidget(int number,QWidget *parent = 0); //number即为已知的外部条件 ~SwitchButtonWidget();private: Ui::SwitchButtonWidget *ui; QButtonGroup *buttonGroup; int m_number; void initButton();public slots: void buttonJudge(int buttonId);};
.cpp文件:
SwitchButtonWidget::SwitchButtonWidget(int number, QWidget *parent) : QWidget(parent), ui(new Ui::SwitchButtonWidget){ ui->setupUi(this); m_number = number; setStyleSheet("background-color:white;" "QPushButton{" "background-color:white;" "color:black;" "text-align:center;" "border-radius: 8px;" "border: 2px groove gray;" "border-style: outset;" "}"); buttonGroup = new QButtonGroup; //第二个参数id可以自行定义 buttonGroup->addButton(ui->pushButton_1,1); buttonGroup->addButton(ui->pushButton_2,2); buttonGroup->addButton(ui->pushButton_3,3); buttonGroup->addButton(ui->pushButton_4,4); buttonGroup->addButton(ui->pushButton_5,5); buttonGroup->addButton(ui->pushButton_6,6); buttonGroup->addButton(ui->pushButton_7,7); buttonGroup->addButton(ui->pushButton_8,8); buttonGroup->addButton(ui->pushButton_9,9); initButton(); connect(buttonGroup,SIGNAL(buttonClicked(int)),this,SLOT(buttonJudge(int)));}SwitchButtonWidget::~SwitchButtonWidget(){ delete ui;}void SwitchButtonWidget::initButton(){ QPushButton *button; bool isFlag = false; QString bname; if(m_number > 9) return; qDebug() << "m_number" << m_number; for(int i = 1; i <= m_number;i++)//pushButton_1 { bname = "pushButton_" + QString::number(i); button = this->findChild<QPushButton *>("pushButton_" + QString::number(i)); //注意这样是this调用findChild方法,一开始使用这个是我是buttonGroup直接去调用的,这个得到的是空的无效的按钮 isFlag = true; if(isFlag) { button->show(); isFlag = false; } } for(int i = m_number + 1; i <= 9;i++) { button = this->findChild<QPushButton *>("pushButton_" + QString::number(i)); isFlag = false; if(!isFlag) { button->hide(); isFlag = false; } }}void SwitchButtonWidget::buttonJudge(int buttonId){ qDebug() << "the Key:" << buttonId;}
主要用到findChild()方法,通过按钮的名字去查找相应的按钮,返回找到的按钮,还有一个findChildern()方法返回的是按钮的QList<>数组。
最初的想法是根据id值来索引相应的按钮,发现没有对应的接口,如果可以这样就方便多了。
/************************************分割线*************************************/
它的成员函数buttons()的使用:
//btnGroup为按钮组对象QList<QAbstractButton*> buttonsList = btnGroup->buttons(); if(buttonsList.isEmpty()){ qDebug() << "isEmpty"; return; } foreach (QAbstractButton *button, buttonsList) { ((QPushButton*)button)->setEnabled(false); //设置按钮不可点击 }
在上面的例子中,通过buttons()函数获取btnGroup的每一个按钮对象,然后设置为不可点击。QAbstractButton 类是 QPushButton,QCheckBox,QRadioButton 等类的基类,它可以代表按钮、单选纽、复选纽等重要窗口部件。所以强转成QPushButton类。end…
0 0
- Qt之QButtonGroup简单使用
- Qt 之 QButtonGroup Class
- QButtonGroup的简单应用
- QButtonGroup的简单应用
- QButtonGroup的简单应用
- 窗体部件之QButtonGroup
- QButtonGroup
- Qt4中的QButtonGroup类使用
- Qt之简单使用Json
- Qt 教程 之 菜单简单使用
- Qt之QSettings的简单使用
- QButtonGroup与QRadioButton的结合使用(Qt4中QButtonGroup类的使用)
- Qt之拦截关闭窗口的QCloseEvent简单使用
- QButtonGroup 类
- qradiobutton qbuttongroup
- QT 滑动效果之 Qt动画组的简单使用(一)
- Qt之实现简单鹰眼
- 学习Qt之简单计算器
- iOS 10 开发适配系列 之 权限Crash问题
- Java设计模式之迭代子模式
- spring security3 demo入门
- 携程是如何借助“预测式外呼”提高呼叫效率的
- Freemarker生成HTML静态页面
- Qt之QButtonGroup简单使用
- 计算机视觉的300多项优质资源
- GCDAsyncSocket TCP 建立 socket 连接
- 考研政治(一):中国近代史纲要
- printf 参数入栈顺序
- JSP基础
- iOS 客户端基于 WebP 图片格式的流量优化(上)
- Adnroid studio 的快捷键修成eclipse的
- ISO8583报文分析