我创建了很多QPushButtons,用QT DESIGNER
给所有的按钮添加了点击信号和插槽名称‘deneme()’,我想要做的事情是:当我点击任何按钮时,应该做一些操作,最后应该禁用按钮,但我们不知道哪个按钮被点击了。我知道可以使用setEnabled()
和isEnabled()
禁用这些按钮,但我不知道如何禁用它们。
发布于 2011-04-19 20:08:31
如果我没记错的话,你把不同的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);
}
}
发布于 2011-04-19 17:42:15
那么为什么setEnabled不能工作呢?The reference。
因此,一个简单的setEnabled(false);就足够了。
QPushButton* button = new QPushButton(someParent);
button->setEnabled(false);
如果在按钮的单击事件上连接事件处理程序,您可能应该查看QT文档:Signal and slots
发布于 2011-04-19 17:49:23
你的意思是按钮必须在点击后立即被禁用?我猜在这种情况下,您可能想要这样做:
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);
}
https://stackoverflow.com/questions/5714404
复制相似问题