回答:
最善かつ推奨される方法は、Qtスタイルシートを使用することです。
のテキストの色と背景色を変更するに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スタイルシートに行くことを強くお勧めします。
color
属性は無効です。HTML <font color="#FFFFFF">...</font>
を介してのみ、フォントの色を設定できました(この場合は白に設定しました。)
color: ;
「リセット」として使用することはそれをするようですが、これは良い習慣ですか、それとももっと良い方法がありますか?
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、カラーロールのセクションを参照してください
私はそれが誰にとっても有用であると思うので、私はこの答えを追加します。
私のペイントアプリケーションで、カラーディスプレイラベルに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()
set in False
では機能しないことに注意してください。
よろしく、
私のために働いた唯一のものは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);
}
<font/>
色だけでなく、タグ内に他の凝ったもの(およびHTMLの人々:Dに馴染みのあるもの)を配置することもできるため、この方法を選択します。これにより、柔軟性が向上します。
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