qt - 样式表可以更改 QPlainTextEdit 中的文本颜色吗?

标签 qt qt5 qtstylesheets

我在 QPlainTextEdit 上使用以下样式表

QPlainTextEdit:focus {
    color:red;
}

但是文本颜色在聚焦时不会改变。

但是如果我使用这个:

QPlainTextEdit:focus {
    background-color: red;
}

它有效...

这是整个样式表:

QPlainTextEdit {
    background-color:#3a3a3a;color:#EEE;border:1px;border-style:solid;border-color:#999;
}

QPlainTextEdit:focus {
    background-color:#DDD;color:#111;border:1px;border-style:solid;border-color:#111;
    selection-background-color: #2222FF; selection-color:white;
}

当我单击 QPlainTextEdit 时,它会将其背景颜色(正确地)从 3a3a3a 更改为 #DDD,但是,它不会将其文本颜色从 #EEE 更改为 #111。

最佳答案

我已经为您的问题找到了解决方案,并且使用的是 QPlainTextEdit。它也适用于 QTextEdit 小部件。

想法是为 QPlainTextEdit 安装一个 eventFilter 并检查它是否接收到焦点。取决于此,您可以设置所需的样式。

我将使用几行代码来解释我自己:

ma​​inwindow.h(我们在ui文件中有一个QPlainTextEdit)

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QtWidgets>

#include "ui_mainwindow.h"

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow();

    Ui::MainWindow ui;

private:
    bool eventFilter(QObject * object, QEvent * event);
};

#endif

主窗口.cpp

#include <QtWidgets>

#include "mainwindow.h"

MainWindow::MainWindow()
{
    ui.setupUi(this);
    ui.plainTextEdit->installEventFilter(this);
}

bool MainWindow::eventFilter(QObject *object, QEvent *event)
{
    if (object == ui.plainTextEdit)
    {
        if (event->type() == QEvent::FocusOut)
        {
            ui.plainTextEdit->setStyleSheet("color: white; background-color: black;");
        } else if (event->type() == QEvent::FocusIn) {
            ui.plainTextEdit->setStyleSheet("color: red; background-color: white;");
        }
        return false;
    }    
    return false;
}

关于qt - 样式表可以更改 QPlainTextEdit 中的文本颜色吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32060606/

相关文章:

qt5 - 如何在 Yocto 设置中启用eglfs 插件?使用 yocto+meta-qt5 进行 Riotboard

c++ - 如何以编程方式更改 Qt 中按钮的样式表?

c++ - 尝试使用 Bonjour 运行演示应用程序,但无法发现在同一主机上运行的服务器

qt - 如何防止 qmake 在链接器命令行上添加控制台子系统?

qt - 不同渲染速度的 Qt widgets

c++ - Qt中如何在循环中从单独运行的子线程中调用父线程函数

qt - 如何仅覆盖一个属性:value pair in Qt StyleSheet

qt - 自定义小部件 : How to implement hover and pressed states 的 QSS 属性

c++ - "undefined class"Qt/C++

windows - 如何在 Qt 中的弹出窗口小部件上创建平滑的圆角