我目前正在开发一个应用程序,启动显示其他对话框的单独进程。我试图实现的功能是模拟这些对话框的模态行为。更具体地说,我需要应用程序在启动对话框时停止处理所有输入,鼠标和键盘,并在关闭时恢复。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