Russian Qt Forum

Qt => Общие вопросы => Тема начата: kadr от Декабрь 17, 2009, 13:12



Название: Изменение цвета текста в QLabel
Отправлено: kadr от Декабрь 17, 2009, 13:12
Привет всем, подскажите как в коде изменить цвет текста в QLabel!
Пытаюсь по такому вот методу: ui->alians_time->palette().text().setColor(color.red());
А он выдает ошибку:
passing 'const QBrush' as 'this' argument of 'void QBrush::setColor(const QColor&)' discards qualifiers


Название: Re: Изменение цвета текста в QLabel
Отправлено: SimpleSunny от Декабрь 17, 2009, 13:38
m->palette()  - Константный метод, поэтому через него не можем менять.

QPalette pal(m->palette());
...
m->setPalette(pal);


Название: Re: Изменение цвета текста в QLabel
Отправлено: kadr от Декабрь 17, 2009, 13:50
m->palette()  - Константный метод, поэтому через него не можем менять.

QPalette pal(m->palette());
...
m->setPalette(pal);
А можно по конкретнее относительно моего случая, что такое m и где она объявляется, и как конкретно задать цвет текста для QLabel!  ???


Название: Re: Изменение цвета текста в QLabel
Отправлено: SimpleSunny от Декабрь 17, 2009, 13:55
m - это твой QLabel. Т. е. создаешь свой QPalette на основе QLabel->palette(). Изменяешь его на свой вкус (в твоем случае меняешь цвет) и задаешь измененный palette QLabel->setPalette();


Название: Re: Изменение цвета текста в QLabel
Отправлено: kadr от Декабрь 17, 2009, 14:03
m - это твой QLabel. Т. е. создаешь свой QPalette на основе QLabel->palette(). Изменяешь его на свой вкус (в твоем случае меняешь цвет) и задаешь измененный palette QLabel->setPalette();
Хорошо я сделал так:
if (inf.lastModified().toString("dd.MM.yyyy") != date.currentDate().toString("dd.MM.yyyy"))
    {

        QPalette pal(ui->alians_time->palette());
       
        ui->alians_time->setPalette(pal);

    }
А как сам цвет то изменить, мне до сих пор остается не ясным!


Название: Re: Изменение цвета текста в QLabel
Отправлено: NicK от Декабрь 17, 2009, 14:05
Код:
 lable->setText("<FONT COLOR=#008000>Some coloured text</FONT>");


Название: Re: Изменение цвета текста в QLabel
Отправлено: SimpleSunny от Декабрь 17, 2009, 14:09
Ты же сам написал в первом своём посте, как менять цвет. ???
pal.setColor(QPalette::TExt, color.red());

Код:
 lable->setText("<FONT COLOR=#008000>Some coloured text</FONT>");

А если "Some coloured text" = <html>...</html> или другие прочие радости, ИМХО лучше пользоваться штатными средствами.


Название: Re: Изменение цвета текста в QLabel
Отправлено: kadr от Декабрь 17, 2009, 14:27
Код:
 lable->setText("<FONT COLOR=#008000>Some coloured text</FONT>");
Да это то что надо, спасибо!


Название: Re: Изменение цвета текста в QLabel
Отправлено: kadr от Декабрь 17, 2009, 14:28
Ты же сам написал в первом своём посте, как менять цвет. ???
pal.setColor(QPalette::TExt, color.red());

Код:
 lable->setText("<FONT COLOR=#008000>Some coloured text</FONT>");

А если "Some coloured text" = <html>...</html> или другие прочие радости, ИМХО лучше пользоваться штатными средствами.
Так не работает!


Название: Re: Изменение цвета текста в QLabel
Отправлено: SimpleSunny от Декабрь 17, 2009, 14:38
Просто с ролью слегка напутал.
pal.setColor(QPalette::WindowText, color.red());

P. S. И имелось виду color.red() или всё-таки Qt::red?
P. P. S.
(inf.lastModified().toString("dd.MM.yyyy") != date.currentDate().toString("dd.MM.yyyy"))
Зачем переводить в строки?
(inf.lastModified() != date.currentDate())


Название: Re: Изменение цвета текста в QLabel
Отправлено: DenisKh001 от Май 02, 2011, 20:04
вот так правильно: pal.setColor(QPalette::Text, Qt::red);