QTextEdit :: setPalette未更新文本颜色

时间:2015-11-21 23:17:04

标签: 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上的所有文本颜色。

有人知道解决方案吗?

2 个答案:

答案 0 :(得分:1)

我在表单上只有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;
}

答案 1 :(得分:0)

QTextDocument可以处理富文本和QTextEdit控件。现在QTextEdit的属性可以控制没有设置富文本属性的文本。如果文本的某些部分有一些属性集(颜色,粗体,字体......),则会覆盖with open ('glossaryterms.txt', 'r') as file: for line in file: if found: print (line) found = False if find in line: found = True 的默认值。

因此,很可能您已将富文本粘贴到文本编辑中或执行了一些设置富文本值的编辑。