205

テキストの色と背景を設定するにはどうすればよいQLabelですか?

4

6 に答える 6

306

最良かつ推奨される方法は、Qtスタイルシートを使用することです。ドキュメント:Qt 5スタイルシートQt6スタイルシート

のテキストの色と背景色を変更するには、次のQLabelようにします。

QLabel* pLabel = new QLabel;
pLabel->setStyleSheet("QLabel { background-color : red; color : blue; }");

Qtスタイルシートの使用を避けてのQPalette色を変更することもできますQLabelが、プラットフォームやスタイルによって結果が異なる場合があります。

Qtのドキュメントに記載されているように:

QPaletteの使用は、すべてのスタイルで機能することが保証されているわけではありません。スタイルの作成者は、さまざまなプラットフォームのガイドラインとネイティブテーマエンジンによって制限されているためです。

しかし、あなたはこのようなことをすることができます:

 QPalette palette = ui->pLabel->palette();
 palette.setColor(ui->pLabel->backgroundRole(), Qt::yellow);
 palette.setColor(ui->pLabel->foregroundRole(), Qt::yellow);
 ui->pLabel->setPalette(palette);

しかし、私が言ったように、私はパレットを使用せずにQtスタイルシートを使用することを強くお勧めします。

于 2010-05-03T06:07:37.397 に答える
55

QPaletteを使用できますがsetAutoFillBackground(true);、背景色を有効にするように設定する必要があります

QPalette sample_palette;
sample_palette.setColor(QPalette::Window, Qt::white);
sample_palette.setColor(QPalette::WindowText, Qt::blue);

sample_label->setAutoFillBackground(true);
sample_label->setPalette(sample_palette);
sample_label->setText("What ever text");

それはWindowsとUbuntuでうまく動作します、私は他のOSで遊んだことがありません。

注:詳細については、 QPaletteのカラーロールセクションを参照してください。

于 2012-07-19T23:41:26.733 に答える
25

この答えを追加するのは、誰にとっても役立つと思うからです。

ペイントアプリケーションのカラー表示ラベルにRGBAカラー(つまり、透明度のアルファ値を持つRGBカラー)を設定する問題に踏み込みます。

最初の答えに出くわしたとき、RGBA色を設定できませんでした。私も次のようなことを試しました:

myLabel.setStyleSheet("QLabel { background-color : %s"%color.name())

ここcolorで、はRGBA色です。

だから、私の汚い解決策は、その境界の長方形を埋めるメソッドを拡張QLabelしてオーバーライドすることでした。paintEvent()

今日は、を開いて、スタイル参照のプロパティリストqt-assistantを読みました。幸いなことに、次のような例があります。

QLineEdit { background-color: rgb(255, 0, 0) }

それは、例として、以下のコードのようなことをすることに私の心を開きます:

myLabel= QLabel()
myLabel.setAutoFillBackground(True) # This is important!!
color  = QtGui.QColor(233, 10, 150)
alpha  = 140
values = "{r}, {g}, {b}, {a}".format(r = color.red(),
                                     g = color.green(),
                                     b = color.blue(),
                                     a = alpha
                                     )
myLabel.setStyleSheet("QLabel { background-color: rgba("+values+"); }")

setAutoFillBackground()で設定してFalseも機能しないことに注意してください。

よろしく、

于 2011-07-29T16:59:17.583 に答える
14

私のために働いた唯一のものはhtmlでした。

そして、私はそれがどのプログラム的アプローチよりもはるかに簡単であることに気づきました。

次のコードは、呼び出し元から渡されたパラメーターに基づいてテキストの色を変更します。

enum {msg_info, msg_notify, msg_alert};
:
:
void bits::sendMessage(QString& line, int level)
{
    QTextCursor cursor = ui->messages->textCursor();
    QString alertHtml  = "<font color=\"DeepPink\">";
    QString notifyHtml = "<font color=\"Lime\">";
    QString infoHtml   = "<font color=\"Aqua\">";
    QString endHtml    = "</font><br>";

    switch(level)
    {
        case msg_alert:  line = alertHtml % line; break;
        case msg_notify: line = notifyHtml % line; break;
        case msg_info:   line = infoHtml % line; break;
        default:         line = infoHtml % line; break;
    }

    line = line % endHtml;
    ui->messages->insertHtml(line);
    cursor.movePosition(QTextCursor::End);
    ui->messages->setTextCursor(cursor);
}
于 2011-08-03T23:03:25.833 に答える
13

ウィジェットの色に関する機能を設定する最良の方法は、QPaletteを使用することです。

そして、探しているものを見つける最も簡単な方法は、Qt Designerを開き、QLabelのパレットを設定して、生成されたコードを確認することです。

于 2010-05-02T18:03:07.343 に答える
7

これは完璧に機能しています

QColorDialog *dialog = new QColorDialog(this);
QColor color=  dialog->getColor();
QVariant variant= color;
QString colcode = variant.toString();
ui->label->setStyleSheet("QLabel { background-color :"+colcode+" ; color : blue; }");

getColor()メソッドは選択された色を返します。を使用してラベルの色を変更できますstylesheet

于 2015-11-07T16:11:24.720 に答える