需要實現效果如下:

為此可以通過代碼設置checkable屬性為true:
btn->setCheckable(true);
具體實現代碼如下:
//導航按鈕 QWidget *btn_widget = new QWidget(this); my_listWidget_btn = new QPushButton(this); my_listWidget_btn->setFixedSize(30,30); my_listWidget_btn->setIcon(QIcon(":/image/Netease/diantai.png")); my_listWidget_btn->setStyleSheet("QPushButton{background-color:#2C7AD1;outline: none}" "QPushButton:pressed{background-color:#3A3A3F}" "QPushButton:checked{background-color:#3A3A3F}" "" ); my_listWidget_btn->setCheckable(true); my_listWidget_btn->setChecked(true);//只能設置一個為選擇狀態 my_listWidget_btn->setAutoExclusive(true); my_songWidget_btn = new QPushButton(this); my_songWidget_btn->setFixedSize(30,30); my_songWidget_btn->setIcon(QIcon(":/image/Netease/diantai.png")); my_songWidget_btn->setStyleSheet("QPushButton{background-color:#2C7AD1;}" "QPushButton:pressed{background-color:#3A3A3F;}" "QPushButton:checked{background-color:#3A3A3F;}" ); my_songWidget_btn->setCheckable(true); my_songWidget_btn->setAutoExclusive(true); my_album_btn = new QPushButton(this); my_album_btn->setFixedSize(30,30); my_album_btn->setIcon(QIcon(":/image/Netease/diantai.png")); my_album_btn->setStyleSheet("QPushButton{background-color:#2C7AD1;}" "QPushButton:pressed{background-color:#3A3A3F}" "QPushButton:checked{background-color:#3A3A3F}" ); my_album_btn->setCheckable(true); my_album_btn->setAutoExclusive(true); my_folder_btn = new QPushButton(this); my_folder_btn->setFixedSize(30,30); my_folder_btn->setIcon(QIcon(":/image/Netease/diantai.png")); my_folder_btn->setStyleSheet("QPushButton{background:rbga(0,0,0,0);}" "QPushButton:pressed{background-color:#3A3A3F}" "QPushButton:checked{background-color:#3A3A3F}" ); my_folder_btn->setCheckable(true); my_folder_btn->setAutoExclusive(true);
為此,可以實現4個按鈕中,每次只有一個按鈕按下,
但是,新的問題來了。
首先設置了setIcon(QIcon(":/image/Netease/diantai.png"));按鈕圖標,然后,又設置了setCheckable(true) 這樣會造成背景顏色有焦點框的出現,
如下:

但是取消setCheckable(false)就不會存在這種情況。
於是,將Icon圖標設置變成border-image設置,在添加相應的背景色,就可以解決這種問題。
具體設置代碼如下:
my_songWidget_btn = new QPushButton(this); my_songWidget_btn->setFixedSize(30,30); my_songWidget_btn->setStyleSheet("QPushButton{background-color:#2C7AD1;\ image:url(:/image/Netease/diantai.png);}" "QPushButton:pressed{background-color:#3A3A3F;\ image:url(:/image/Netease/diantai.png);}" "QPushButton:checked{background-color:#3A3A3F;\ image:url(:/image/Netease/diantai.png);}" );
my_songWidget_btn->setCheckable(true);
my_songWidget_btn->setAutoExclusive(true);
也就是修改樣式,即可解決
