Qt键盘修改器移位键以及另一个未被检测到的按键

时间:2017-10-26 20:29:52

标签: qt c++11 qt5

if(e->modifiers() == Qt::ShiftModifier && e->key() == Qt::Key_H)

此if语句未执行。有人可以指出这个问题吗?

我正试图在Qt keyPressEvent()中检测shift + h keypress。我正在使用qt 5.9

检测到键事件,但if语句未评估为true。

我无法让代码进入if语句。我在Mac OS X el capitan上

1 个答案:

答案 0 :(得分:1)

e->key()无法处理案件差异。

如果您使用e->key() ---- SHIFT+HSHIFT+h(在Windows中按大写锁定),则两者都相同。

如果您想专门处理SHIFT+h(小'h'),请使用e->text()

尝试类似下面的内容(通过应用CAPS LOCK在Windows上测试):

if (e->modifiers() == Qt::ShiftModifier && e->text() == QString('h'))
{
    QString str = e->text();
    std::cout << str.toLatin1().data() << endl;
}