如何检测鼠标单击时的修饰键
我有一个 QTableWidget,希望在单击列标题时按 Ctrl 标记整个列。
获取列索引不是问题,因为有一个 sectionPressed
信号,它为我提供了单击的列的当前索引。
单击列时如何获取任何键盘修饰符的状态?
I have a QTableWidget
and would like that pressing Ctrl while clicking on a column header, marks the whole column.
To get the column index is not a problem, since there is a sectionPressed
signal, which gives me the current index of the column clicked.
How can I get the state of any keyboard modifiers when a column is clicked?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
在 Qt 4 上,尝试
QApplication::keyboardModifiers()
。
Qt 5 和 Qt 6 等效项是
QGuiApplication::keyboardModifiers()< /代码>
。
On Qt 4, try
QApplication::keyboardModifiers()
.The Qt 5 and Qt 6 equivalent is
QGuiApplication::keyboardModifiers()
.如果您想通过鼠标单击事件了解修饰键状态,可以使用 QGuiApplication::keyboardModifiers() 它将检索最后一个鼠标事件期间的按键状态:
否则,如果您想显式查询修饰符状态,您应该使用 QGuiApplication::queryKeyboardModifiers()。这在其他用例中可能是必需的,例如在应用程序启动期间检测修饰键。
If you are want to know the modifiers key state from a mouse click event, you can use QGuiApplication::keyboardModifiers() which will retrieve the key state during the last mouse event:
Otherwise, if you want to query explicitly the modifiers state you should use QGuiApplication::queryKeyboardModifiers(). This might be required in other use case like detecting a modifier key during the application startup.
来自 Qt 文档 — QMouseEvent 类:
From Qt Documentation — QMouseEvent Class:
我必须安装
eventFilter
并删除sectionPressed
处理程序:在
eventFilter
中,我可以检查是否按下了某个键,如下所示:I have to install an
eventFilter
and remove thesectionPressed
handler:Within the
eventFilter
, I can check whether a key was pressed like so: