博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Qt 之 QRadioButton
阅读量:4223 次
发布时间:2019-05-26

本文共 2465 字,大约阅读时间需要 8 分钟。

简述

QRadioButton部件提供了一个带有文本标签的单选框(单选按钮)。

QRadioButton是一个可以切换选中(checked)或未选中(unchecked)状态的选项按钮。单选框通常呈现给用户一个“多选一”的选择。也就是说,在一组单选框中,一次只能选中一个单选框。

版权声明:一去、二三里,未经博主允许不得转载。

详细描述

单选框默认开启自动互斥(autoExclusive)。如果启用了自动互斥,属于同一个父部件的单选框的行为就和属于一个互斥按钮组的一样。如果你需要为属于同一父部件的单选框设置多个互斥按钮组,把它们加入QButtonGroup中。

每当一个按钮切换选中或未选中状态时,会发出的toggled()信号。如果希望每个按钮切换状态时触发一个动作,连接到这个信号。使用isChecked()来查看特定按钮是否被选中。

就像QPushButton一样,单选框可以显示文本,以及可选的小图标。图标使用setIcon()来设置,文本可以在构造函数或通过setText()来设置。可以指定快捷键,通过在文本中的特定字符前指定一个&。

例如:

QRadioButton *button = new QRadioButton("Search from the &cursor", this);

这个示例中,快捷键为Alt+c。关于更多快捷键的内容请参考:QShortcut 。如果要显示一个“&”,请使用’&&’。

示例

我们来实现一个iphone中常见的开关效果 - 单选。

效果

这里写图片描述

源码

构建单选框QRadioButton,然后将它们添加至按钮组QButtonGroup中。

QHBoxLayout *pLayout = new QHBoxLayout();m_pButtonGroup = new QButtonGroup(this);// 设置互斥m_pButtonGroup->setExclusive(true);for (int i = 0; i < 3; ++i){    QRadioButton *pButton = new QRadioButton(this);    // 设置文本    pButton->setText(QString::fromLocal8Bit("切换%1").arg(i + 1));    pLayout->addWidget(pButton);    m_pButtonGroup->addButton(pButton);}pLayout->setSpacing(10);pLayout->setContentsMargins(10, 10, 10, 10);setLayout(pLayout);// 连接信号槽connect(m_pButtonGroup, SIGNAL(buttonClicked(QAbstractButton*)), this, SLOT(onButtonClicked(QAbstractButton*)));

槽函数,用来判断当前点击的按钮,以及获取按钮组中各个按钮的选中状态。

void MainWindow::onButtonClicked(QAbstractButton *button){    // 当前点击的按钮    qDebug() << QString("Clicked Button : %1").arg(button->text());    // 遍历按钮,获取选中状态    QList<QAbstractButton*> list = m_pButtonGroup->buttons();    foreach (QAbstractButton *pButton, list)    {        QString strStatus = pButton->isChecked() ? "Checked" : "Unchecked";        qDebug() << QString("Button : %1 is %2").arg(button->text()).arg(strStatus);    }}

样式

单选框样式

QRadioButton{    spacing: 2px;    color: white;}QRadioButton::indicator {    width: 45px;    height: 30px;}QRadioButton::indicator:unchecked {    image: url(:/Images/switchOff);}QRadioButton::indicator:unchecked:hover {    image: url(:/Images/switchOffHover);}QRadioButton::indicator:unchecked:pressed {    image: url(:/Images/switchOffPressed);}QRadioButton::indicator:checked {    image: url(:/Images/switchOn);}QRadioButton::indicator:checked:hover {    image: url(:/Images/switchOnHover);}QRadioButton::indicator:checked:pressed {    image: url(:/Images/switchOnPressed);}

上面,我们通过调用QButtonGroup的setExclusive(true)来设置按钮组中的单选框互斥。

当然,也可以设置setExclusive(false)来关闭互斥,从而实现多选功能。即使这样,如之前所言 - 强烈建议使用众所周知的约定。所以,如果要实现多选功能,建议选择QCheckBox。

更多参考

你可能感兴趣的文章
目前最流行的15个机器学习框架,你知道几个?
查看>>
2018诺贝尔经济学奖得主,一名62岁的Python教徒
查看>>
从代码恐惧到开发大牛:开发者“10倍提升”宝典
查看>>
吴恩达机器学习课程:完全用Python完成,可以的!(附代码)
查看>>
狂破11项记录,谷歌年度最强NLP论文到底强在哪里?
查看>>
AI“重造”麻省理工学院!今宣布投资10亿美元成立全新计算学院,近70年来最大结构调整...
查看>>
波音公司探索飞行AI,模拟人类大脑制造芯片!
查看>>
清华大学与MIT合作推出数据科学与信息技术「微硕士」学位
查看>>
信阳新闻网:《观察+思考+努力=创新——访南京大数据研究院院长刘鹏》
查看>>
广东电信20多位经理到访云创参观交流
查看>>
秦淮区科协主席付煜一行莅临云创调研指导
查看>>
广东省民营企业合作交流协会会长谭铭卓一行到访
查看>>
云创大数据亮相2017世界物联网博览会,六因子环境监测仪等引关注热潮
查看>>
云创冬日紫金山踏雪游记
查看>>
西安思源学院电子信息工程学院院长张卫钢一行到访
查看>>
邀请函|欢迎参加2019云创大数据实验平台金融类/电子商务类/数学统计类院校各省总代理招募大会!...
查看>>
云创大数据的2018年!
查看>>
【回顾】云创大数据地震事业部成立
查看>>
全国高校(高职)大数据师资培训班圆满落幕,200多名老师抢先“尝鲜”!
查看>>
【回顾】云创大数据教育事业部成立
查看>>