我在Qt文本编辑小部件中编写引号时遇到问题。我输入的每个单引号或双引号都是直接插入的。但是,我想输入卷曲的左右引号(如果可能的话,在开头的左下角和末尾的右上角,这在某些语言中很常见 - 例如斯洛伐克语或捷克语。)
我认为切换到语言的键盘布局可以解决这个问题(就像从左到右和从右到左的语言一样),但这并没有改变任何东西。我没有在文档中找到任何关于此的内容,这让我觉得我错过了一些东西。或者不是。
你知道用4.7版的Qt(for C ++)实现这个目的的任何方法吗?
谢谢
答案 0 :(得分:1)
您确定您的键盘配置正确吗?以下是处理卷曲引号(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"
另一个想法:你确定你在文本编辑小部件中使用的字体是否使用不同的字形来表示直接引号和引号?
答案 1 :(得分:1)
现在我理解你的问题了。我在这里看到两个解决方案:
您可以捕获"
密钥并在其后面添加一些逻辑
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
}
}
}
你应该添加一些逻辑来控制插入哪些引号(可能是locale和if-opening-quotes-are-inserted-inserted)。希望有所帮助