c++ - QTextEdit::setPalette 不更新文本颜色

标签 c++ qt user-interface

我正在更改两个 QTextEdit 小部件的文本颜色以及许多其他 QLineEdits。每当我禁用或启用 readonly 属性以使其在视觉上更好时,就会发生这种情况。

QPalette* disablePallete;
QPalette* enabledPallete;
disablePallete->setColor(QPalette::Text,Qt::darkGray);
enabledPallete->setColor(QPalette::Text,Qt::black);

// disable writing
ui->TextEdit->setPalette(*disablePallete);
// enable writing
ui->TextEdit->setPalette(*enablePallete);

当我更改调色板时,这对我所有的 LineEdits 都非常有效。

我的问题是 QTextEdits 中的文本不会立即更新,只有当我单击框内的某些内容或编辑文本时才会更新。它也会出现故障,并且只会更新光标移动到的位置。

这是一个例子。

enter image description here

我每次都这样做来绕过它。它会强制重绘所有内容。

ui->roomDescriptionTextEdit->append("");
ui->roomDescriptionTextEdit->undo();

尽管这可行,但我想要一种更简单的方法来更新 QTextEdit 上的所有文本颜色。

有人知道解决方案吗?

最佳答案

我在表单上只有 QTextEdit 和 QPushbutton,它对我来说工作正常。如果您找不到错误,请提供完整代码。

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    connect(ui->pushButton, SIGNAL(clicked(bool)), this, SLOT(_handleClicked(bool)));
}


void MainWindow::_handleClicked(bool ok)
{
    QPalette palette;
    palette.setColor(QPalette::Text,Qt::darkGray);
    ui->textEdit->setPalette(palette);
}

MainWindow::~MainWindow()
{
    delete ui;
}

关于c++ - QTextEdit::setPalette 不更新文本颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33849772/

相关文章:

c++ - QT中通过qss定位QPushButtons

c# - 在 C# 中有类似 Python 的 getattr() 的东西吗?

java - 用于访问子面板元素的更漂亮的解决方案

python - 在 Mac OSX 10.10 上为 python 安装 Dlib 时遇到问题

c++ - 在 Qt 项目中使用 sem_t

c++ - 是否需要 std::launch::async 策略?

c++ - QSlider 增加 handle 尺寸

vb.net - 将 VB.Net 桌面应用程序转换为移动 Web 应用程序的最快方法?

c++ - cin input (input is an int) 当我输入一个字母时,它不会打印不正确一次,而是打印正确一次然后在循环的其余部分使用 inc

c++ - 为什么我会收到此警告? "Member ' x' 未在此构造函数中初始化”