qt按钮切换互斥功能
有这样一种功能:一组按钮,点击其中一个,该按钮被选中,其他按钮取消选中。
我这里简单说一下方法。
创建一个继承自QFrame的窗口类,在上面放几个按钮,按钮属性设置如下:
然后设置按钮的qss,下面是其中一个的按钮(其他按钮类似):data文件夹和exe所在的文件夹在同一目录,下面有几个图片。说明:qss中图片路径是相对于exe的路径;如果想让按钮的图片自适应,要使用border-image,不用使用background-image.
1 QPushButton#btnMap 2 { 3 font-size:28px; 4 font-family:Microsoft YaHei; 5 font-weight:400; 6 color:rgba(205,242,255,1); 7 border-image:url(../data/skin/image/ui/bg_btn_top_normal.png); 8 } 9 QPushButton#btnMap:hover 10 { 11 border-image:url(../data/skin/image/ui/bg_btn_top_hover.png); 12 font-family:Microsoft YaHei; 13 } 14 QPushButton#btnMap:pressed, QPushButton#btnMap:checked 15 { 16 border-image:url(../data/skin/image/ui/bg_btn_top_pressed.png); 17 font-family:Microsoft YaHei; 18 }
加载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);
按钮图片: