我在Qt文本编辑小部件中编写引号时遇到问题。我输入的每个单引号或双引号都被插入为一个简单的引号。但是,我想输入左右引号(如果可能的话,左下角的开头和右上角的末尾,这在一些语言中很常见 - 例如斯洛伐克语或捷克语)。QT文本编辑小部件中的引号
我认为切换到语言的键盘布局会照顾到这一点(如从左到右和从右到左的语言),但这并没有改变任何东西。我在文档中没有发现任何关于这个的东西,这让我觉得我错过了一些东西。或不。
你知道有什么办法可以用4.7版的Qt(for C++)来实现吗?
谢谢
我在Qt文本编辑小部件中编写引号时遇到问题。我输入的每个单引号或双引号都被插入为一个简单的引号。但是,我想输入左右引号(如果可能的话,左下角的开头和右上角的末尾,这在一些语言中很常见 - 例如斯洛伐克语或捷克语)。QT文本编辑小部件中的引号
我认为切换到语言的键盘布局会照顾到这一点(如从左到右和从右到左的语言),但这并没有改变任何东西。我在文档中没有发现任何关于这个的东西,这让我觉得我错过了一些东西。或不。
你知道有什么办法可以用4.7版的Qt(for C++)来实现吗?
谢谢
现在我明白你的问题了。我在这里看到两种解决方案:
你可以捕捉"
钥匙,并将其添加
class editor : public QTextEdit
{
Q_OBJECT
public:
explicit editor();
void keyPressEvent(QKeyEvent *e)
{
if (e->key() == Qt::Key_QuoteDbl)
{
this->insertHtml("“");
this->insertHtml("”");
this->insertHtml("„");
this->insertHtml("“");
}
else
QTextEdit::keyPressEvent(e); // this passes other keys for ordinary processing
}
}
}
背后的一些逻辑,您应该添加一些逻辑控制插入其中引号(也许语言环境和基础,如果打开引号,是-已插入)。希望帮助
谢谢。我希望自己不需要实施,但从长远来看,这会给我更多的灵活性。 –
您确定您的键盘配置正确吗?以下是处理弯引号就好了,我(的Windows 7):
#include <QtGui>
class MyLineEdit : public QLineEdit {
Q_OBJECT
public:
explicit MyLineEdit() : QLineEdit(NULL) {
connect(this, SIGNAL(textChanged(QString)), SLOT(on_textChanged(QString)));
}
private slots:
void on_textChanged(const QString &text) {
qDebug() << text;
}
};
int main(int argc, char **argv) {
QApplication app(argc, argv);
MyLineEdit edit;
edit.show();
return app.exec();
}
#include "main.moc"
另一个想法:你确定你正在使用文本编辑插件的字体使用直对弯引号不同的字形?
它不在字体中,因为复制/粘贴到MS Word中会粘贴直引号。关于键盘配置,你有什么想法可能配置不正确?我正在使用具有默认捷克键盘布局的捷克本地化Windows XP,无需任何修改。 –
我上面的测试应用程序是否适合您?如果您粘贴到记事本中,会得到什么结果? –
用捷克键盘粘贴直的双引号。 –
也许你使用某种复杂的验证的?难道其他Unicode字符工作? – friendzis
我不t使用任何验证器。其他unicode字符工作正常,甚至希伯来语,它会自动开始从右向左键入。我已经在linux,windows xp和mac上测试过了,每个地方都有相同的结果。 –