如何在Qt应用程序中覆盖系统键盘布局?我需要更改一些字符代码。基本问题是SHIFT + SPACE没有将ZWNJ(U + 200C)放在Qt文本引擎中(标准波斯语版布局在SHIFT + SPACE中有200C,它在除Qt应用程序之外的所有地方都有效)。
这肯定是一个错误,但我不能等待补丁版本。我需要手动操作。
Qt版本:5.3.1
操作系统:Windows(XP最高8)
答案 0 :(得分:1)
您需要继承GUI类(我假设QLineEdit
或QTextEdit
并实现您自己的keyPressEvent
版本以检测用户何时按下Shift + Space。然后您可以插入ZWNJ与insertPlainText
。
void MyTextEdit::keyPressEvent(QKeyEvent *e)
{
QTextEdit::keyPressEvent(e);
if( e->key() == 0x200c )
{
insertPlainText( QChar(0x200C) );
}
}
在上面的代码中,e->key() == 0x200c
不起作用。 QKeyEvent::key()
应该从Qt::Key
返回一个值,而不是ZWNJ的Unicode值(Qt::Key
没有元素0x200c)。然而,这就是Qt 5.3如何为我工作。