QtスタイルシートsetStyleSheet

2202 ワード

Qtでwidgetの背景色や画像を設定する方法には、paintEvent()の書き換え、パレットQpalette、スタイルシートsetStyleSheetなどがあります. 
setStyleSheet()
pWidget->setStyleSheet("background-color:blue;");//背景色の設定
pWidget->setStyleSheet("background-color:rgb(199,237,204)");  

pWidget->setStyleSheet("background-image:url(:/folder/show.bmp);");//背景画像の設定
簡単で便利なのが長所です
欠点は
(1)親ウィンドウをsetStyleSheet()で設定すると、子ウィンドウもsetStyleSheet()を使用しない限り、子ウィンドウの設定が制限されます.2つのForm Classでそれぞれサイズウィンドウを作成し、大きなウィンドウのForm Classでウィンドウをshow()呼び出しても、小さなウィンドウは影響を受けます
(2)setStyleSheet()でロードされたピクチャはスケーリングできません.widgetウィンドウのサイズと一致しない場合は、ピクチャのスケーリングをプログラムで実現できません.widgetウィンドウのサイズと一致するようにピクチャを直接処理しない限り.
 
親ウィンドウの適切な設定方法:
pWidget->setAutoFillBackground(true);
 QPalette palette;
 QPixmap pixmap(":/folder/show.bmp");
 palette.setBrush(pWidget->backgroundRole(),QBrush(pixmap));
 pWidget->setPalette(palette);