Qt スタイルシート優先度と追加指定
前回スタイルシート設定について書いたので、その少し続きを…
スタイルシート設定は後から設定した物が優先で使用されます。
widget->setStyleSheet("background-color : rgb( 0 , 0 , 0 );"); widget->setStyleSheet("background-color : rgb( 255 , 255 , 255 );");
この場合、widgetの背景色は白になります。
また、後からスタイル設定をすると、前回の設定は引き継がれません。
widget->setStyleSheet("background-color : rgb( 0 , 255 , 0 );color : rgb( 255,255,255);"); // 背景緑 文字色白 widget->setStyleSheet("color : rgb( 255 , 0 , 0 );"); // 文字色赤
この場合、文字色の変更は反映されますが、背景色緑の設定が失われてしまいます。
後からスタイルの情報を追加したい場合は、QWidgetクラスからstylesheetのプロパティを取得し、スタイルを追加します。
void CreateLabel() { QLabel* label = new QLabel("text",this); label->setStyleSheet("color : rgb( 255 , 0 , 0 );") // 文字色は赤 addStyleSheet(label); } void addStyleSheet(QLabel* label) { // スタイルシート情報取得 QString str = label->styleSheet(); // 追加したいスタイルを連結 str += "background-color : rgb( 0 , 255 , 0 );"; // 背景色は緑 label->setStyleSheet(str); }