37

ダブル スピン ボックスの背景色を設定しようとしていますが、どの関数を使用すればよいかわかりません。

SetBackgroundRoleを受け入れると呼ばれる関数を見ましたQt::ColorRoleが、これも使用方法がわかりません。

QComboBoxまたはの背景色を変更する簡単な方法を教えてくださいQDoubleSpinBox

4

9 に答える 9

45

これは一般的に正しいですが、パレットで異なる背景の役割を使用するウィジェット(スピンボックスやボタン/コンボボックスなど)は考慮されていません。より一般的な解決策は次のようになります。

QPalette pal = widget.palette();
pal.setColor(widget.backgroundRole(), Qt::blue);
widget.setPalette(pal);

または、さまざまなパレットの役割の説明を調べて、必要な役割を見つけてから、変更したい他の役割を含むウィジェットに適用することもできます。パレットの変更は、子ウィジェットに伝播する必要があります。

于 2008-10-07T13:49:00.603 に答える
40

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

背景色が正しいことを確認するには、Qt Style Sheetを使用することをお勧めします。の背景色を変更するために私がしたことは次のQComboBoxとおりです。

myComboBox->setStyleSheet("QComboBox { background-color: blue; }");

特に を試したことはありませんQSpinBoxが、同じように機能すると思います。

于 2008-10-07T12:16:46.577 に答える
13

実際、QComboBox の場合の QPalette の Qt ドキュメントを見ると、バックグラウンド ロールはおそらくあなたが望むものではありません。あなたが望むものは:

QPalette::Base 主にテキスト入力ウィジェットの背景色として使用されますが、コンボボックスのドロップダウン リストやツールバー ハンドルの背景など、他の描画にも使用できます。通常、白または別の明るい色です。

したがって、コンボボックスの背景色を、それがオンになっているウィジェットの色と一致させるために使用しているコードは次のとおりです。

QPalette pal = myComboBox->palette();
pal.setColor(QPalette::Base, pal.color(QPalette::Window));
myComboBox->setPalette(pal);
于 2010-06-02T16:57:59.577 に答える
11

this->setAutoFillBackground( true );どうやらQt 4.1以降では、背景色を適用するためにパレットを設定する必要があります。

于 2009-10-15T13:26:32.343 に答える
2

実際のウィジェットに関係なく青色のパレットを作成します。

comboBox->setPalette( QPalette( Qt::blue ) );
于 2009-07-26T11:04:46.973 に答える
0

私は何かを試してみます

QPalette pal = widget.palette();
pal.setColor(QPalette::Window, Qt::blue);
widget.setPalette(pal);
于 2008-10-07T09:51:02.797 に答える
-1
comboBox->setPalette( QPalette( Qt::blue ) );

私にとってはうまくいきます!

于 2011-01-15T17:17:35.913 に答える