首页 文章

QTextEdit :: setPalette不更新文本颜色

提问于
浏览
0

我正在改变两个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上的所有文本颜色 .

Does anyone know of a solution?

2 回答

  • 0

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

    QTextEdit 可以处理富文本和 QTextDocument 控件 . 现在 QTextEdit 的属性可以控制没有富文本属性集的文本 . 如果文本的某些部分具有某些属性集(颜色,粗体,字体等),则会覆盖 QTextEdit 中的默认值 .

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

相关问题