Как получить цветные переходные сообщения в 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.

Другие вопросы по тегам