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只能选中一个

一、同一容器内互斥

效果

  1. 先在界面是拖入一个控件容器,这里以QGroupBox为例
  2. 再放进来几个按钮控件
  3. 设置按钮属性,第一个红框勾选是设置按钮可选,第二个勾选就是设置自动互斥,当同一容器内的按钮勾选了这个选项就会自动互斥

二、不同容器内互斥

效果

  1. 还是先设置所要互斥的按钮的属性
  2. 需要用到QtQButtonGroup类,实例化一个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按钮切换互斥功能的主要内容,如果未能解决你的问题,请参考以下文章

QT软件开发之基础控件--2.1.3 QRadioButton按钮

qt stacked widget界面中如何用按钮实现换页

Qt实战内容的实现功能

Qt实战内容的实现功能

如何将 QLabel 放入切换按钮 Qt c++

Qt中槽函数如何获取按钮QPushButton的按钮文本