我正在更改两个 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 中的文本不会立即更新,只有当我单击框内的某些内容或编辑文本时才会更新。它也会出现故障,并且只会更新光标移动到的位置。
这是一个例子。
我每次都这样做来绕过它。它会强制重绘所有内容。
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/