如何在QStatusBar中获取彩色瞬态消息?

时间:2016-02-06 23:32:54

标签: qt colors message 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 个答案:

答案 0 :(得分:3)

如何在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的样式表..