10

私のアプリケーションでは、アプリケーション全体のスタイルシートは、アプリケーションにロードされたリソース ファイルから取得されます。

QListWidget 用に定義された 2 つのスタイルシートがあります。

QListWidget#Good{
..some color properties
}

QListWidget#Bad {
..soem different color properties
}

フォームでは、私の QListWidget のオブジェクト名は「Good」なので、#good スタイルに準拠しています。実行時に、「SetObjectName」を「Bad」に設定し、UI でスタイルを即座に変更したい場合があります。

私は2つのことに気づきました:

  1. 「SetObjectName("Bad");」を呼び出すだけです。メソッドからスタイルを変更しません...
  2. 唯一の「SetObjectName("Bad");」QListWidget を含む Widget のコンストラクターから呼び出された場合に機能します。

明らかに、「スタイルの更新」フェーズが欠落しています。コードに「setStyleSheet」を含めることはできません。QSS ファイルから取得する必要があります。

私は何が欠けていますか?

4

1 に答える 1

13

これで解決しました。呼び出し:

style()->unpolish(theWidget);
style()->polish(theWidget);

objectName ( setObjectName) の変更後の私のウィジェットでは、うまくいきました。

于 2012-01-30T16:18:49.400 に答える