c++ - QT 文本编辑小部件中的引号

标签 c++ qt text input quotes

我在 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/

相关文章:

c++ - 已写入文件上的 FlushFileBuffers

python - matplotlib 图从 QT 抛出 TypeError

Python reportlab 在第一页完全充满文本后动态创建新页面

C++ 反转迭代器

c++ - 新的运营商 ->有或没有

c++ - 带文本格式的 QT 日志记录

c++ - Qt - 图形用户界面卡住

javascript - jQuery 文本替换

excel - 如何在文本文件中搜索多个匹配字符串并将总和值放入 Excel 单元格

c++ - vector 中元素的总和?