Как получить цветные переходные сообщения в QStatusBar?
Мне нужно, чтобы цветовые коды сообщений мигали в строке состояния моего приложения Qt5.5.
Я использую showMessage, как это:
ui->statusBar->showMessage("My Message", 5000);
Я хотел бы изменить цвет одного сообщения. Я не нашел способа избежать подкласса QStatusBar и переопределения showMessage(). Мне действительно нужны такие агрессивные изменения?
Я пытался использовать Rich Text в соответствии с:
ui->statusBar->showMessage(QString("<html><head/><body><p style=\"color:red\">%1</p></body></html>").arg("My Message"));
но, похоже, он не распознается (печатает метки).
Изменение палитры или настройка таблицы стилей не будут ограничиваться текущим сообщением.
Что еще я мог попробовать?
1 ответ
Как получить цветные переходные сообщения в QStatusBar?
Изменение палитры или настройка таблицы стилей не будут ограничиваться текущим сообщением.
Изменение таблицы стилей не обязательно относится ко всем виджетам в программе. Вы можете определенно ограничить область применения таблицы стилей.
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QTimer>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
// the stylesheet can be applied within ui->statusBar hierarchy of
// objects, but you can make it even more narrow scope as
// ui->statusBar->setStyleSheet("QStatusBar{color:red}") if needed
ui->statusBar->setStyleSheet("color: red");
ui->statusBar->showMessage("Text!");
QTimer::singleShot(2000, this, SLOT(tryAnotherColor()));
}
void MainWindow::tryAnotherColor()
{
ui->statusBar->setStyleSheet("color: blue");
ui->statusBar->showMessage("More Text!");
}
Я пытался использовать Rich Text
Я предполагаю, что не все элементы управления виджетов Qt имеют функциональность рендеринга расширенного текста, но большинство из них понимают таблицы стилей в стиле CSS.