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上
答案 0 :(得分:1)
e->key()
无法处理案件差异。
如果您使用e->key()
---- SHIFT+H
和SHIFT+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;
}