我在 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
并检查它是否接收到焦点。取决于此,您可以设置所需的样式。
我将使用几行代码来解释我自己:
mainwindow.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/