qt按钮切换互斥功能
Posted 不倒的土豆
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了qt按钮切换互斥功能相关的知识,希望对你有一定的参考价值。
有这样一种功能:一组按钮,点击其中一个,该按钮被选中,其他按钮取消选中。
我这里简单说一下方法。
创建一个继承自QFrame的窗口类,在上面放几个按钮,按钮属性设置如下:
然后设置按钮的qss,下面是其中一个的按钮(其他按钮类似):data文件夹和exe所在的文件夹在同一目录,下面有几个图片
QPushButton#btnMap font-size:28px; font-family:Microsoft YaHei; font-weight:400; color:rgba(205,242,255,1); border-image:url(../data/skin/image/ui/bg_btn_top_normal.png); QPushButton#btnMap:hover border-image:url(../data/skin/image/ui/bg_btn_top_hover.png); font-family:Microsoft YaHei; QPushButton#btnMap:pressed, QPushButton#btnMap:checked border-image:url(../data/skin/image/ui/bg_btn_top_pressed.png); font-family:Microsoft YaHei;
加载qss代码:
void AppHelper::LoadStyleSheet(QWidget *dlg, const QString &strQssName) QString strPath = m_strExePath + "../data/skin/qss/" + strQssName; QFile file(strPath); if (file.open(QFile::ReadOnly)) dlg->setStyleSheet(file.readAll()); else qDebug() << "load qss failed!" << strPath; file.close();
我们初始化其中一个按钮选中:
ui->btnMap->setChecked(true);
按钮图片:
Qt 设置button互斥,一组button只能选中一个
Qt 设置button互斥,一组button只能选中一个
一、同一容器内互斥
效果
- 先在界面是拖入一个控件容器,这里以
QGroupBox
为例 - 再放进来几个按钮控件
- 设置按钮属性,第一个红框勾选是设置按钮可选,第二个勾选就是设置自动互斥,当同一容器内的按钮勾选了这个选项就会自动互斥
二、不同容器内互斥
效果
- 还是先设置所要互斥的按钮的属性
- 需要用到
Qt
的QButtonGroup
类,实例化一个QButtonGroup
对象,然后将所有需要互斥的按钮全部添加进去
QButtonGroup * box = new QButtonGroup;
// 设置是否互斥
box->setExclusive(true);
// 将需要互斥的按钮全部添加到 QButtonGroup 中
box->addButton(ui.pushButton);
box->addButton(ui.pushButton_3);
box->addButton(ui.pushButton_2);
box->addButton(ui.pushButton_4);
box->addButton(ui.pushButton_5);
box->addButton(ui.pushButton_6);
box->addButton(ui.pushButton_7);
box->addButton(ui.pushButton_8);
box->addButton(ui.pushButton_9);
box->addButton(ui.pushButton_10);
完成
以上是关于qt按钮切换互斥功能的主要内容,如果未能解决你的问题,请参考以下文章