gpt4 book ai didi

python - 使用 QTextCharFormat 更改选择颜色

转载 作者:行者123 更新时间:2023-12-03 21:39:56 25 4
gpt4 key购买 nike

我正在编写简单的编辑器,我使用 QTextEdit 进行文本编辑 QSyntaxHighlighter 进行语法着色。
样式由 QTextCharFormat 应用。

我知道如何创建简单的样式,例如:

keyword_format = QtGui.QTextCharFormat()
keyword_format.setForeground(QtCore.Qt.darkMagenta)
keyword_format.setFontWeight(QtGui.QFont.Bold)

exception_format = QtGui.QTextCharFormat()
exception_format.setForeground(QtCore.Qt.darkBlue)
exception_format.setFontWeight(QtGui.QFont.Italic)

但是如何在选择文本时更改颜色以及:
  • 所选文本可能包含许多不同格式的标记
  • 我可能想为每个格式化程序独立设置选择背景颜色和字体颜色

  • 我不知道我是否解释得足够清楚,例如我有代码
     if foobar:
    return foobar:
    else:
    raise Exception('foobar not set')

    现在, if , else , returnraise是关键字,使用 keyword_format 格式化, Exception使用 exception_format 格式化.如果我选择文本 raise Exception('foobar not set')我要换 raise关键字,对绿色说, Exception粉红色并保留其余的选择。

    最佳答案

    您可以使用 mergeCharFormat()结合 QTextCursor 指向 QTextEdit 中的 document()

    用法(C++):

    QTextCursor cursor(qTextEditWidget->document());

    QTextCharFormat backgrounder;
    backgrounder.setBackground(Qt::black);
    QTextCharFormat foregrounder;
    foregrounder.setForeground(Qt::yellow);

    // Apply the background
    cursor.setPosition(start, QTextCursor::MoveAnchor);
    cursor.setPosition(end, QTextCursor::KeepAnchor);
    cursor.setCharFormat(backgrounder);

    cursor.setPosition(start, QTextCursor::MoveAnchor);
    cursor.setPosition(end, QTextCursor::KeepAnchor);

    // Merge the Foreground without overwriting the background
    cursor.mergeCharFormat(foregrounder);

    即使在合并第二个 QTextCharFormat 之前移动光标,它似乎也能工作

    关于python - 使用 QTextCharFormat 更改选择颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23043484/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com