QT文本编辑小部件中的引号
Quotation marks in QT text editing widgets
我在Qt文本编辑小部件中编写引号有问题。我输入的每一个单引号或双引号都会作为一个直引号插入。但是,我希望输入左、右双引号(如果可能的话,在开头的左下角和结尾的右上方,这在某些语言中很常见,例如斯洛伐克语或捷克语)。
我原以为切换到语言的键盘布局就能解决这个问题(就像从左到右和从右到左的语言一样),但这并没有改变任何东西。我没有在文档中找到任何关于这一点,这让我觉得我错过了什么。。
你知道有什么方法来实现这个与Qt (c++)的版本4.7?
谢谢
现在我明白你的问题了。我在这里看到了两个解决方案:
- 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 } } }
您应该添加一些逻辑来控制插入的引号(可能是基于locale和if- openopen -quotes-are-already- inserts)。
您确定键盘配置正确吗?下面是处理花引号对我来说很好(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"
另一个想法:您确定在文本编辑部件中使用的字体对直引号和大引号使用不同的字形吗?
相关文章:
- 我无法在Visual Studio代码中使用CIN输入答案,它说输入您的年龄,但它说只读文本编辑器如何解决这个问题?
- 如何使用 c++ 实现并发文件/文本编辑?
- 如何在文本编辑器中处理 [-Wc++11-extensions]
- QT 创建器只会将第一个单词从文本编辑转换为纯文本
- 在C++的“编辑”文本框中禁用文本编辑,同时保持启用滚动
- 如何在Windows中将使用Qt制作的记事本设置为默认文本编辑器
- 尝试在自定义 QT 创建器文本编辑器中创建查找和替换循环.我似乎无法设置光标位置
- UTF-16LE 编码问题与 Qt 文本编辑器用 C++ 编写
- 要求文本编辑,文本格式
- 如何将库导入文本编辑器
- 富文本编辑器--创建和维护项目符号列表时的问题
- 使用Strncpy在C++中创建一个简单的文本编辑器
- Qt C++ 如何在文本编辑的开头获取光标
- 在C 中创建简单的文本编辑器
- 在QT中遇到了丰富的文本编辑问题
- 递归功能以创建文本编辑
- 简单的C++文本编辑程序
- 从列表小部件中选择并添加到文本编辑
- Qt - 无效使用不完整的类型 'class QScrollBar' - 为文本编辑小部件添加水平滚动条
- QT文本编辑小部件中的引号