我在 Qt 文本编辑小部件中写引号时遇到问题。我输入的每个单引号或双引号都被直接插入。但是,我想输入左右 curl 的引号(如果可能的话,左下角在开头,右上角在结尾,这在某些语言中很常见——例如斯洛伐克语或捷克语)。
我认为切换到语言的键盘布局会解决这个问题(就像从左到右和从右到左的语言一样),但这并没有改变任何东西。我没有在文档中找到任何与此相关的内容,这让我觉得我遗漏了一些东西。或者不是。
您知道使用 4.7 版 Qt(用于 C++)实现此目的的任何方法吗?
谢谢
最佳答案
现在我明白你的问题了。我在这里看到两个解决方案:
- 使用 QRegExpValidator。这需要对 QTextEdit::textChanged() 事件采取行动。在这种情况下,您将不得不解析每次更改的所有文本 - 性能效率不高(:
您可以捕获
"
键并在其后面添加一些逻辑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 } } }
您应该添加一些逻辑来控制插入哪些引号(可能基于语言环境和 if-opening-quotes-are-already-inserted)。希望对您有所帮助
关于c++ - QT 文本编辑小部件中的引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8357668/