改变 Qt qtextedit 已经拥有的单词的颜色

Posted

技术标签:

【中文标题】改变 Qt qtextedit 已经拥有的单词的颜色【英文标题】:changing The color of the words that Qt qtextedit already has 【发布时间】:2020-05-25 17:02:23 【问题描述】:

我想在用户将某些单词写入 qtextedit 后更改它们的颜色。 我该怎么做?

例如,用户写

我想改成

【问题讨论】:

setStyleSheet() 方法应该这样做。 @ΦXocę웃Пepeúpaツ 我不明白为什么你需要知道条件?当用户按键时,我想改变一些单词的颜色。 @nader,很简单,因为 qt 有一些冗长的验证,可以在 2 行代码中解决问题... 【参考方案1】:

您可以使用QLineEdit::editingFinished() 信号来执行此操作。当按下 Return 或 Enter 键或行编辑失去焦点时会发出此信号。

示例。

在您的 UI 构造函数中:

QObject::connect(MainWindow::yourQLineEdit, &QLineEdit::editingFinished, 
                 this, &MainWindow::SetTextColorInQLineEdit);

在类中:

void MainWindow::SetTextColorInQLineEdit()

     MainWindow::yourQLineEdit->QWidget::setStyleSheet("your style for color");

     return;

困难的方式 - 你需要覆盖QKeyEvent

并检查这个枚举 - QEvent::KeyPressQEvent::KeyRelease

在这里查看:

QEventhttps://doc.qt.io/qt-5/qevent.html

QKeyEventhttps://doc.qt.io/qt-5/qkeyevent.html#text

【讨论】:

它不是 QLineEdit。它是一个 QTextEdit,我不想更改所有文本,但我想更改某些单词的颜色。 @nader 尝试为 QTextEdit 重写此代码 - ***.com/a/14424003

以上是关于改变 Qt qtextedit 已经拥有的单词的颜色的主要内容,如果未能解决你的问题,请参考以下文章

Qt QTextEdit 最大宽度的问题

QTextEdit foreach

Qt之解析HTML

Qt之解析HTML

在 QTextEdit 中更改单个字符串颜色

android 上 QTextEdit 的选择