我应该在我的Qt / Qml应用程序中触发所有事件。特别是我试图触发键和鼠标事件。我想用QTimer实现一种备用,当事件被触发时它会重置。 可以在我的Qt / Qml应用程序中实现此功能吗?
答案 0 :(得分:1)
无法触发所有这些小部件的事件(使用 onClicked()信号例如)
为什么不呢?每个应用程序都有多个"小部件"并且几乎在所有情况下都使用信号处理程序钩子来完成它,并且我的意思是非常罕见的例外。
因此,我应该在QApplication上触发一般事件来了解是否 单击鼠标或键盘按钮
从那里开始使用一些确定该事件应该做什么的个人方法?如果您的应用程序确实与您声称的GUI元素一样多,这听起来是一个非常糟糕的主意。我非常怀疑,与已经实施的解决方案相比,创建更强大或更有效的解决方案会更容易,或者对此问题的解决方案更少。
要么你是QML及其编程范例的新手,并且还没有意识到处理程序钩子是用户交互的预期方式,这种情况更可能发生,或者你正在尝试做一些非常好的事情。 #34;自定义"
实施"全球"并不是那么难。键盘和鼠标事件的处理程序,只需将一个MouseArea
放在应用程序窗口的顶部,然后使用它来捕获所有鼠标交互,并将键盘焦点设置在充当键盘事件接收器的单个项目上。
但是,这意味着一旦您这样做,您将全权负责手动管理事件的定向方式。我已经为键盘事件做了这个,因为QML的一个重点项目是"设计并不适合我的特殊需求,我可以告诉你这很麻烦。为鼠标做这件事只会让它变得更难,更容易出错。
这也意味着你必须放弃QML开箱即用的几乎所有UI元素,因为它们都依赖于接收实际焦点和事件。
当然,您可以从C ++中拦截更低级别的事件,但这只会更难,更容易实际破坏。
考虑到您的稀疏活动历史,看起来您真正需要做的就是更好地熟悉QML背后的编程范例,而不是询问有关您不需要做的事情的问题,并且真的不要这样做。我希望这样做,因为它们很复杂且不必要,而且在大多数用例中都代表了非常适得其反的反模式。