Qt setStyleSheetソースコード分析

QWidget :: SetStyleSheet()コアコードの原則:

この関数は実行中に実行されます:

void QWidgetPrivate :: setStyle_helper QStyle * newStyle ブール 伝播

{

。。。

/ *

すべてのウィジェットが見つかり、描画が実行されることがわかります

* /

    if 伝播){

        //順序が変更される可能性があるため、リストをコピーします

        const QObjectList childrenList = children ;

        以下のためにINT iが0 = I < childrenList サイズ(); ++ I ){

            QWidgetの* C = qobject_cast < QWidgetの*>(childrenList I ))。

            もしc

                c- > d_func ()-> inheritStyle ();

        }

}

。。。

}

私たちは一般的にそう思っていますが、ウィジェットではないように見える一部のウィジェットも有効になります。

      QListView :: itemr {

          背景色:rgb(110,110,110);

色:rgb(233,233,233);

      }

QListView の項目はQAbstractWidgetItemであり、ウィジェットではありませんが、描画を実行できます。QListViewの基になるコアコード、そのインターフェース項目は実際にはQAbstractWidgetItemであるため、実際には項目ではありませんが、QListViewの最下層はウィジェットの層に類似しているはずです。これは、QAbstractWidgetItemに関連付けてアイテムのデータを表示するために使用されます。したがって、スタイルシートに設定されたアイテムは、似たようなQAbstractWidgetItemではありませんが、関連付けの下部にある対応するウィジェットはこのアイテムです。

元の記事を85件公開 賞賛された18件 120,000回の閲覧

おすすめ

転載: blog.csdn.net/a1317338022/article/details/105281203