QT开发中文网

我实现的功能是 收到来一条新数据追加到QPlainTextEdit 中,字体颜色 红蓝交替

要实现红蓝交替的字体颜色来追加新数据到 QPlainTextEdit,你可以使用一个简单的计数器或布尔值来跟踪当前的颜色。以下是一个示例代码,演示了如何做到这一点:

#include <QApplication>
#include <QWidget>
#include <QVBoxLayout>
#include <QPlainTextEdit>
#include <QPushButton>
#include <QTextCursor>
#include <QTextCharFormat>

class MyWidget : public QWidget {
public:
    MyWidget() : currentColorRed(true) {  // 初始化为红色
        QVBoxLayout* layout = new QVBoxLayout(this);
        
        // 创建 QPlainTextEdit
        textEdit = new QPlainTextEdit(this);
        textEdit->setReadOnly(true);  // 设置为只读
        
        // 创建按钮
        QPushButton* button = new QPushButton("添加新数据", this);

        // 按钮点击事件
        connect(button, &QPushButton::clicked, [=]() {
            appendColoredText("追加的新数据内容");
        });

        layout->addWidget(textEdit);
        layout->addWidget(button);

        setLayout(layout);
    }

private:
    QPlainTextEdit* textEdit;
    bool currentColorRed;  // 用于跟踪当前颜色

    void appendColoredText(const QString& text) {
        QTextCursor cursor(textEdit->textCursor());
        cursor.movePosition(QTextCursor::End);  // 移动到光标末尾

        QTextCharFormat format;
        
        // 根据当前颜色选择格式
        if (currentColorRed) {
            format.setForeground(Qt::red);
            currentColorRed = false;  // 下次切换为蓝色
        } else {
            format.setForeground(Qt::blue);
            currentColorRed = true;   // 下次切换为红色
        }
        
        cursor.insertBlock();  // 插入一个新块(换行)
        
        cursor.mergeCharFormat(format);  // 应用当前颜色格式
        
        cursor.insertText(text);  // 插入文本
        
        textEdit->setTextCursor(cursor);  // 更新光标位置
    }
};

int main(int argc, char *argv[]) {
    QApplication app(argc, argv);

    MyWidget window;
    window.setWindowTitle("红蓝交替文本示例");
    window.resize(400, 300);
    window.show();

    return app.exec();
}

在这个示例中:

  1. currentColorRed 是一个布尔变量,用于跟踪当前使用的颜色。
  2. 当用户点击“添加新数据”按钮时,将调用 appendColoredText() 方法。
  3. 根据 currentColorRed 的值,设置文本的颜色为红色或蓝色,并在每次调用后切换该值。
  4. 每次追加的新文本都会以不同的颜色显示,实现了交替效果。

运行程序并点击按钮,每次将新的文本添加到 QPlainTextEdit 中时,字体会在红色和蓝色之间交替变化。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://qt.0voice.com/?id=13109

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?