单击Qt C ++事件按钮

时间:2014-03-01 20:12:34

标签: c++ qt qpushbutton qtstylesheets

我正在使用Qt框架编写应用程序。我正在使用自定义CSS文件来设置我的小部件和组件的样式,如下所示:

  QPushButton:checked#switchButtonConsole, QPushButton:checked#switchButtonList, QPushButton:checked#switchButtonStats {                                                    
      background: qlineargradient(spread:reflect, x1:1, y1:0, x2:1, y2:1, stop:0 #151513, stop:1 #101010);                                                                    
      border-right: 1px solid #2E2E26;                                                                                                                                        
      padding: 5px;                                                                                                                                                           
      color: #94948E;                                                                                                                                                         
  } 

我有不同的CSS样式,具体取决于按钮的状态。是选中还是取消选中。

我有3个按钮,默认情况下,第一个按钮设置为选中,其他按钮设置为未选中。这是我用来设置按钮状态的代码:

void MainWindow::on_switchButtonConsole_clicked() {                                                                                                                            
     ui->mainStack->setCurrentIndex(3);                                                                                                                                    

    if(!isChecked(ui->switchButtonConsole)) {                                                                                                                                  
        ui->switchButtonConsole->setChecked(true);                                                                                                                             
    };                                                                                                                                                                    

};

我遇到的问题是,如果我点击另一个按钮(记住,我有一个类似上面按钮的功能),按下的前一个按钮将保持在检查状态,因此检查的状态样式将保留。因此,如果我点击所有3个按钮,它们就会被检查。 我似乎无法弄清楚如何将前一个按钮设置为未选中状态,因此这仅适用于按下我当前按下的按钮的已检查状态样式,并将未选中的样式设置为其余按钮。

1 个答案:

答案 0 :(得分:2)

此处的海峡解决方案是将所有三个按钮添加到QButtonGroup并将其设置为独占。这样Qt就会自动完成您想要的任务。