如何禁用QPushButton

Cen*_*ver 22 qt

我创建了许多QPushButtons,添加了点击信号和一个插槽名称'deneme()'到所有按钮QT DESIGNER和我想要做的事情; 当我点击任何按钮时,应该进行一些操作,最后应该禁用该按钮,但我们不知道点击了哪个按钮.我知道我可以禁用使用按钮setEnabled()isEnabled(),但我不知道如何禁用它们.

bru*_*uno 28

如果我理解正确,你将各种连接QPushButtons到同一个插槽.在插槽内部,deneme()您想知道哪个按钮是clicked.你可以这样做:

  void deneme() {
    QPushButton * b = qobject_cast<QPushButton *>(sender());
    if (b) {
       if (b == button1) { //button1 clicked
           //doSomething();
       } 
       else {
          if (b == button2) {
             //doSomething();
          }
       }
       b->setEnabled(false);
    }
  }
Run Code Online (Sandbox Code Playgroud)


Rvd*_*vdK 8

为什么setEnabled不工作呢?参考.

所以简单的setEnabled(false); 足够.

QPushButton* button = new QPushButton(someParent);
button->setEnabled(false);
Run Code Online (Sandbox Code Playgroud)

如果在按钮的click事件上连接事件处理程序,您可能应该查看QT文档: Signal和slots