質問
テキストの色と背景を設定するにはどうすればよいですか QLabel
?
解決
最良かつ推奨される方法は、使用することです 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スタイルシートに行くことを強くお勧めします。
他のヒント
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
そして、読んでください スタイル参照プロパティリスト. 。 Affortuniveには、以下を述べる例があります。
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
それを機能させません。
よろしく、
私のために働いた唯一のことは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);
}
ウィジェットの色に関する機能を設定する最良の方法は、使用することです qpalette.
探しているものを見つける最も簡単な方法は、QTデザイナーを開き、QLabelのパレットを設定して生成されたコードを確認することです。
これは完璧に機能しています
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