ダブル スピン ボックスの背景色を設定しようとしていますが、どの関数を使用すればよいかわかりません。
SetBackgroundRole
を受け入れると呼ばれる関数を見ましたQt::ColorRole
が、これも使用方法がわかりません。
QComboBox
またはの背景色を変更する簡単な方法を教えてくださいQDoubleSpinBox
。
これは一般的に正しいですが、パレットで異なる背景の役割を使用するウィジェット(スピンボックスやボタン/コンボボックスなど)は考慮されていません。より一般的な解決策は次のようになります。
QPalette pal = widget.palette();
pal.setColor(widget.backgroundRole(), Qt::blue);
widget.setPalette(pal);
または、さまざまなパレットの役割の説明を調べて、必要な役割を見つけてから、変更したい他の役割を含むウィジェットに適用することもできます。パレットの変更は、子ウィジェットに伝播する必要があります。
スタイルの作成者はさまざまなプラットフォームのガイドラインとネイティブ テーマ エンジンによって制限されているため、を使用してQPalette
もすべてのスタイルで機能するとは限りません。
背景色が正しいことを確認するには、Qt Style Sheetを使用することをお勧めします。の背景色を変更するために私がしたことは次のQComboBox
とおりです。
myComboBox->setStyleSheet("QComboBox { background-color: blue; }");
特に を試したことはありませんQSpinBox
が、同じように機能すると思います。
実際、QComboBox の場合の QPalette の Qt ドキュメントを見ると、バックグラウンド ロールはおそらくあなたが望むものではありません。あなたが望むものは:
QPalette::Base 主にテキスト入力ウィジェットの背景色として使用されますが、コンボボックスのドロップダウン リストやツールバー ハンドルの背景など、他の描画にも使用できます。通常、白または別の明るい色です。
したがって、コンボボックスの背景色を、それがオンになっているウィジェットの色と一致させるために使用しているコードは次のとおりです。
QPalette pal = myComboBox->palette();
pal.setColor(QPalette::Base, pal.color(QPalette::Window));
myComboBox->setPalette(pal);
this->setAutoFillBackground( true );
どうやらQt 4.1以降では、背景色を適用するためにパレットを設定する必要があります。
実際のウィジェットに関係なく青色のパレットを作成します。
comboBox->setPalette( QPalette( Qt::blue ) );
私は何かを試してみます
QPalette pal = widget.palette();
pal.setColor(QPalette::Window, Qt::blue);
widget.setPalette(pal);
comboBox->setPalette( QPalette( Qt::blue ) );
私にとってはうまくいきます!