我目前正在開發一個應用程序,啓動顯示其他對話框的單獨進程。我試圖實現的功能是模擬這些對話框的模態行爲。更具體地說,我需要應用程序在啓動對話框時停止處理所有輸入,鼠標和鍵盤,並在關閉時恢復。Qt應用程序:模擬模態行爲(啓用/禁用用戶輸入)
雖然如果你能夠建議如何做到這一點而不求助於Always-On-Top行爲,那麼這對對話並不是很重要,儘管如此,這也會很好。
要注意,該應用程序是在Windows和Linux下編譯的。另外,它不是直接啓動對話框的選項。它們在單獨的可執行文件中。此外,該應用程序是一個非常複雜的軟件,因此單獨禁用小部件不是一種選擇,或者至少不是一個可行的方法。
我找到了lock()和unlock()在Qt 3.3中的QApplication類中的函數。我們目前正在使用Qt 4.5,它似乎沒有API。事實上,Qt 4.5 QApplication類似乎並沒有提供對Event Loop的訪問。
總結:如何在Qt應用程序中禁用/啓用用戶輸入,包括鼠標和鍵盤快捷鍵?
謝謝,剛剛發現這一點我自己大約10分鐘前。奇蹟般有效。順便說一句, – 2010-01-06 01:02:28
。 _setEventFilter()_不是一個好主意。它似乎永久設置了事件過濾器。 _QObject :: installEventFilter()_和_QObject :: removeEventFilter()_對我更好。參考:http://doc.trolltech.com/4.5/eventsandfilters.html – 2010-01-06 01:07:30
確保你沒有全局阻塞事件,如果你這樣做,如果你真的想要一些互動仍然工作(如線程之間的信號/插槽,等等)。 – 2010-01-06 17:22:14