首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何禁用QPushButton

如何禁用QPushButton
EN

Stack Overflow用户
提问于 2011-04-19 17:38:26
回答 4查看 99.2K关注 0票数 30

我创建了很多QPushButtons,用QT DESIGNER给所有的按钮添加了点击信号和插槽名称‘deneme()’,我想要做的事情是:当我点击任何按钮时,应该做一些操作,最后应该禁用按钮,但我们不知道哪个按钮被点击了。我知道可以使用setEnabled()isEnabled()禁用这些按钮,但我不知道如何禁用它们。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-04-19 20:08:31

如果我没记错的话,你把不同的QPushButtons连接到同一个插槽。在插槽deneme()中,您想知道哪个按钮是clicked。你可以这样做:

代码语言:javascript
运行
复制
  void deneme() {
    QPushButton * b = qobject_cast<QPushButton *>(sender());
    if (b) {
       if (b == button1) { //button1 clicked
           //doSomething();
       } 
       else {
          if (b == button2) {
             //doSomething();
          }
       }
       b->setEnabled(false);
    }
  }
票数 39
EN

Stack Overflow用户

发布于 2011-04-19 17:42:15

那么为什么setEnabled不能工作呢?The reference

因此,一个简单的setEnabled(false);就足够了。

代码语言:javascript
运行
复制
QPushButton* button = new QPushButton(someParent);
button->setEnabled(false);

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

票数 11
EN

Stack Overflow用户

发布于 2011-04-19 17:49:23

你的意思是按钮必须在点击后立即被禁用?我猜在这种情况下,您可能想要这样做:

代码语言:javascript
运行
复制
class MyWidget : public QWidget 
{
Q_OBJECT

// ...

private slots:
  void disableButton();

private:
  QPushButton *myButton;

// ...
};

MyWidget::MyWidget(QWidget *parent = NULL) : QWidget(parent) 
{

///...
myButton = new QPushButton("click me", this);
connect(myButton, SIGNAL(clicked), this, SLOT(disableButton));
// ...
}

void MyWidget::disableButton() 
{
myButton->setEnabled(false);
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5714404

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档