我正在使用QT,我用一些按鈕和控件完成了全屏應用程序。 有時,當彈出錯誤對話框時,顯示並保持打開狀態(保持頂部)。qt - 允許用戶僅按一個按鈕打開一個對話框
我想在應用程序屏幕中有一個按鈕,當打開此對話框時也可以按下按鈕,但所有其他控件/按鈕應該不可用。
我想到了一個像透明自定義小部件一樣的特殊形式,而不是覆蓋「特殊」按鈕,但我真的不知道它是如此簡單。
我正在使用QT,我用一些按鈕和控件完成了全屏應用程序。 有時,當彈出錯誤對話框時,顯示並保持打開狀態(保持頂部)。qt - 允許用戶僅按一個按鈕打開一個對話框
我想在應用程序屏幕中有一個按鈕,當打開此對話框時也可以按下按鈕,但所有其他控件/按鈕應該不可用。
我想到了一個像透明自定義小部件一樣的特殊形式,而不是覆蓋「特殊」按鈕,但我真的不知道它是如此簡單。
創建一個特殊的按鈕,並設置對象名稱按鈕:
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();
現在都沒有特殊按鈕被禁用,啓用 - 做同樣的事情。
隨着元素的添加,這不會很好地擴展。 – 2014-09-26 11:12:01
@NicolasHolthaus你在談論動態添加pushButtons嗎? – Chernobyl 2014-09-26 11:16:58
他只希望啓用一個控件,並禁用所有其他控件,這意味着每當他添加一個控件時,他必須將一行代碼添加到「禁用全部」函數或任何其他內容,這違背了打開/關閉原則IMO。我認爲有一個更可擴展的方法。 – 2014-09-26 11:22:25
可能更簡單,只有在特殊按鈕範圍內時才讓事件通過冒泡 – 2014-09-26 10:44:46
這可能是一個不錯的選擇。謝謝 – SNC 2014-09-29 07:09:13