2015-11-21 2 views
0

Я меняю цвет текста двух виджетов QTextEdit, а также довольно много других QLineEdits. Это происходит всякий раз, когда я отключу или включу свойство readonly, чтобы сделать его лучше визуально.QTextEdit :: setPalette не обновляет цвет текста

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(); 

Несмотря на то, что это работает, я хотел бы менее Hacky способ обновить все цвета текста на QTextEdit.

Кто-нибудь знает о решении?

+0

Вы пробовали 'ui-> TextEdit-> update()'? – LogicStuff

+0

Ya, обновление() не работает. –

+0

Как насчет использования таблиц стилей? – LogicStuff

ответ

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; 
} 
+0

Я не мог найти ошибку, и код слишком велик, чтобы публиковать здесь. Вы побудили меня воссоздать проект в гораздо меньших масштабах, похожий на ваш, а также нашли, что он работает правильно, как и вы. Я не могу изолировать ошибку на своем конце YET, однако я собираюсь отметить ваш ответ как правильный. Спасибо, Александр. –

+0

добро пожаловать! –

0

QTextEdit может обрабатывать форматированный текст и QTextDocument управления, что. Теперь свойства QTextEdit могут управлять текстом, который не имеет богатого набора свойств текста. Если какая-то часть текста имеет некоторый набор свойств (цвет, полужирный, шрифт, ...), это переопределяет значения по умолчанию от QTextEdit.

Так что, скорее всего, вы вложили богатый текст в текстовое редактирование или выполнили какое-то редактирование, в котором заданы значения богатого текста.

Смежные вопросы