How to make a QPushButton disabled
我创建了许多QPushButton,并使用
如果我正确理解,您会将各种
您可以执行以下操作:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | void deneme() { QPushButton * b = qobject_cast<QPushButton *>(sender()); if (b) { if (b == button1) { //button1 clicked //doSomething(); } else { if (b == button2) { //doSomething(); } } b->setEnabled(false); } } |
为什么setEnabled不起作用? 参考资料。
所以一个简单的setEnabled(false); 足够。
1 2 | QPushButton* button = new QPushButton(someParent); button->setEnabled(false); |
如果在按钮的click事件上连接事件处理程序,则应该查看QT文档:
信号和插槽
您是说要在单击按钮后立即禁用按钮? 我想在这种情况下,您可能想要执行以下操作:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | 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); } |
布鲁诺的答案是正确的。
1 | sender(); |
返回
您可以将其转换为
使用任一
C样式强制转换,即
要么
要么
QPushButton * clickedButton = qobject_cast(sender());
据我所知,qobject_cast的工作方式与C ++中的dynamic_cast <>相似。 但是,如果您遇到编译问题,则上面给出的任何解决方案都可以正常工作。