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);

 按钮图片:

 

posted @ 2023-06-09 14:40  阳光下的小土豆  阅读(464)  评论(0编辑  收藏  举报