つくねの手帳

C++およびAndroidアプリ開発メインで何か書きたい

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);
 }