2014-09-26 59 views
0

我正在使用QT,我用一些按鈕和控件完成了全屏應用程序。 有時,當彈出錯誤對話框時,顯示並保持打開狀態(保持頂部)。qt - 允許用戶僅按一個按鈕打開一個對話框

我想在應用程序屏幕中有一個按鈕,當打開此對話框時也可以按下按鈕,但所有其他控件/按鈕應該不可用。

我想到了一個像透明自定義小部件一樣的特殊形式,而不是覆蓋「特殊」按鈕,但我真的不知道它是如此簡單。

+0

可能更簡單,只有在特殊按鈕範圍內時才讓事件通過冒泡 – 2014-09-26 10:44:46

+0

這可能是一個不錯的選擇。謝謝 – SNC 2014-09-29 07:09:13

回答

1

創建一個特殊的按鈕,並設置對象名稱按鈕:

pushButton->setObjectName("special"); 

查找您所有的按鈕:

QList<QPushButton*> allButtons = this->findChildren<QPushButton*>(); 
for(int i = 0; i < allButtons.size(); ++i) 
{ 
    if(allButtons.at(i)->objectName() != "special") 
     allButtons.at(i)->setEnable(false); 
} 
allButtons.clear(); 

現在都沒有特殊按鈕被禁用,啓用 - 做同樣的事情。

+0

隨着元素的添加,這不會很好地擴展。 – 2014-09-26 11:12:01

+0

@NicolasHolthaus你在談論動態添加pushButtons嗎? – Chernobyl 2014-09-26 11:16:58

+0

他只希望啓用一個控件,並禁用所有其他控件,這意味着每當他添加一個控件時,他必須將一行代碼添加到「禁用全部」函數或任何其他內容,這違背了打開/關閉原則IMO。我認爲有一個更可擴展的方法。 – 2014-09-26 11:22:25

相關問題