一键按下Qt档+3



我使用的是Qt 5.11。

我需要一键按下shift + 3。但这个组合会生成特殊字符^,因为我使用的是土耳其Q键盘。所以如果不再次按下shift + 3,我就无法捕捉到它。

我尝试了换挡调节器和多按键解决方案,但没有成功。

我想覆盖^。有什么可行的方法吗?

尝试以下操作即可。尽管根据文档,即使存在有效信息,nativeVirtualKey也可能返回0。所以不确定它是否一直有效。我用德语、英语和阿拉伯语键盘进行了测试。

更新(用土耳其键盘布局测试(

void keyPressEvent(QKeyEvent *ev)
{
if ((ev->nativeVirtualKey() == Qt::Key_3 || ev->key() == Qt::Key_3)  && ev->modifiers()  == Qt::ShiftModifier)
{
//Do something
}
}

对于土耳其式布局,^caret(一个死键(,除了上述之外,您还可以通过覆盖nativeEvent函数并手动调用keyEvent函数来捕捉死键按下

bool nativeEvent(const QByteArray & eventType, void * message, long * result)
{
MSG *msg = reinterpret_cast<MSG*>(message);
if (msg->message == WM_DEADCHAR)
{
QKeyEvent *key = new QKeyEvent(QEvent::KeyPress, Qt::Key_3, Qt::ShiftModifier);
}
}

一个小问题是,即使在另一种语言中按下^,keyEvent也会被调用,不一定只使用Shift+3,所以这是一种意外的行为,但对于您的情况,您可以告诉用户Shift+3或^都是特定功能的快捷方式

相关内容

  • 没有找到相关文章

最新更新