Qt中的按键事件

3

我想知道 Qt::ShiftModifierQt::Key_Shift 有什么区别? 以及以下两者之间的区别:

if(event->modifiers() & Qt::ShiftModifier){...}

并且

if(event->modifiers() == Qt::ShiftModifier){...}
1个回答

4

Qt::ShiftModifier来自于值为0x02的Qt::KeyboardModifier枚举。 Qt::Key_Shift来自于值为0x01000020的Qt::Key枚举。

它们的意义相同,但在不同的上下文中使用。

if(event->modifiers() & Qt::ShiftModifier){...}

修改器位字段是否包含移位?这只是一个标准的C / C ++位操作。

if(event->modifiers() == Qt::ShiftModifier){...}

修改器位域是否仅包含移位?

谢谢,那么...修改器位域可以包含不止一个关键字吗? 例如:位域A = 11001100 例如:移位位域S = 01001000 例如:某些关键位域K = 10001100 因此,A&S为真,A&K为真,但S!= K 那么...如果我们想要检查Shift是否被按下,什么更好的符合目标条件(if(... & ...)还是if(... == ...))? - Illia Levandovskyi
这取决于您想要实现的行为;如果您只想在按住Shift键时做出反应,那么请使用等号运算符。但是,如果Shift + Ctrl是有效的(即使您只想忽略Ctrl键),请使用位与运算符。通常位操作符就足够了。 - cmannett85

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接