我創建了很多QPushButtons,添加了點擊信號和一個插槽名稱'deneme()',所有按鈕都使用了QT DESIGNER
並且我想要做的事情是;當我點擊任何按鈕時,應該做一些操作,最後應該禁用按鈕,但我們不知道哪個按鈕被點擊。我知道我可以禁用與setEnabled()
和isEnabled()
按鈕,但我不知道如何禁用它們。如何使一個QPushButton被禁用
回答
如果我理解正確你連接各種QPushButtons到同一個插槽。插槽deneme()裏面你想知道哪個按鈕被點擊了。 你可以這樣做:
void deneme() {
QPushButton * b = qobject_cast<QPushButton *>(sender());
if (b) {
if (b == button1) { //button1 clicked
//doSomethin();
}
else {
if (b == button2) {
//doSomething();
}
}
b->setEnabled(false);
}
}
爲什麼setEnabled無法正常工作呢? The reference。
所以一個簡單的setEnabled(false);足夠。
QPushButton* button = new QPushButton(someParent);
button->setEnabled(false);
如果一個事件處理程序的按鈕的Click事件連接也許你應該看看Qt文檔: Signal and slots
問題是我創建了Gui並添加了與Qt設計器的所有按鈕。當我點擊任何按鈕後,將會執行一些操作,最後該按鈕應該被禁用。 – Cengaver 2011-04-19 10:07:40
你的意思是按鈕點擊後立即被禁用?我想在這種情況下,你可能想要做這樣的事情:
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);
}
你的答案可能是正確的,但問題是我創建了Gui並添加了與Qt設計器的所有按鈕。當我點擊任何按鈕後,會執行一些操作,最後該按鈕應該被禁用,並且我在這個編程中很新穎:( – Cengaver 2011-04-19 10:08:27
你的意思是你的問題是在這個方法中你不能定義哪個按鈕被按下了?你可以使用QSignalMapper,它允許你將非參數信號(如QPushButton中的clicked()信號)映射到接受一個參數的插槽,因此你可以在上面的代碼示例中修改disableButton()方法來接收指示哪個按鈕被點擊 – beduin 2011-04-19 12:09:53
非常感謝你 – Cengaver 2011-04-19 15:00:51
布魯諾的答案是正確的。
sender();
返回QObject*
可以使用它轉換爲一個QPushButton*
任 空調風格投即QPushButton* clickedButton = (QPushButton*)(sender())
或 QPushButton* clickedButton = static_cast<QPushButton*>(sender())
或 QPushButton * clickedButton = qobject_cast(發送者()); 據我所知,qobject_cast在C++中的作用類似於dynamic_cast <>。但是,如果你有編譯問題,上面給出的任何解決方案都應該正常工作。
非常感謝 – Cengaver 2011-04-19 15:01:27
- 1. 如何禁用默認qpushbutton
- 2. 當另一個被檢查時禁用兩個QPushButton
- 3. 鏈路QPushButton寬度到另一個QPushButton
- 4. 如何檢查QPushButton是否被點擊
- 5. 切換一個QPushButton
- 6. 如何使一個text_field被禁用,直到使用firewatir打入啓用狀態?
- 7. 在任務之前禁用QPushButton
- 8. 如何在QPushButton中使用Button_SetElevationRequiredState?
- 9. pyqt:如何禁用QPushButton的多次點擊?
- 10. 如何使HTML看起來被禁用?
- 11. 如何使一個ItemsSource不被使用?
- 12. 如何使一個GridViewColumn只讀/禁用?
- 13. Java-如何問「如果一個JButton被禁用,然後___」
- 14. 禁用一個KeyboardInterrupt它已被使用過一次後
- 15. 使一個單元格被禁用,直到另一個按鈕被選中TableViewCell
- 16. 如何旋轉QPushButton?
- 17. 如何迭代QPushButton
- 18. 如何找出一個元素被禁用的原因?
- 19. 如何禁用按鈕的另一個按鈕被點擊
- 20. 如何檢查一個控件是否被禁用?
- 21. 使用兩個圖像設計QPushButton
- 22. 如何繼承Qpushbutton信號
- 23. 如何通過點擊QPushbutton
- 24. 如何包裝一個QFileDialog和QPushButton對象中的
- 25. 如何在QPushButton點擊位置繪製一個形狀?
- 26. 如何改變一個QPushButton圖標,當它有焦點?
- 27. PyQT如何在QPushbutton上創建一個QEvent.Enter?
- 28. 使容器格被禁用
- 29. 不能使msdropdown被禁用
- 30. 我該如何禁止一個方法被觸發?
我認爲這是正確的,但它提供了錯誤,「qobject_cast沒有在此範圍內聲明」,即使我包含「qobject.h」 – Cengaver 2011-04-19 12:31:30