Analyse du code source de Qt setStyleSheet

Principe du code de base de QWidget :: SetStyleSheet ():

Cette fonction sera exécutée lors de l'exécution:

void QWidgetPrivate :: setStyle_helper ( QStyle * newStyle , bool propagate )

{

。。。

/ *

Vous pouvez voir qu'il trouvera tous les widgets et effectuera le dessin

* /

    if ( propager ) {

        // Nous copions la liste car la commande peut être modifiée

        const QObjectList childrenList = enfants ;

        for ( int i = 0; i < childrenList . size (); ++ i ) {

            QWidget * c = qobject_cast < QWidget *> ( childrenList . À ( i ));

            si ( c )

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

        }

}

。。。

}

Nous le pensons généralement, mais certains widgets qui ne semblent pas être des widgets prendront également effet, tels que:

      QListView :: itemr {

          couleur de fond: rgb (110, 110, 110);

couleur: rgb (233,233,233);

      }

L'élément de QListView est QAbstractWidgetItem, ce n'est pas un widget, mais il peut effectuer un dessin, car le code de base sous-jacent de QListView, son interface Item est en effet QAbstractWidgetItem, ce n'est en effet pas un élément, mais la couche inférieure de QListView devrait être similaire. Il est utilisé pour s'associer à QAbstractWidgetItem et afficher les données de l'élément. Par conséquent, l'élément défini dans la feuille de style n'est pas un QAbstractWidgetItem qui ressemble, mais un widget correspondant en bas de l'association est cet élément.

Publié 85 articles originaux · loué 18 · 120 000 vues

Je suppose que tu aimes

Origine blog.csdn.net/a1317338022/article/details/105281203
conseillé
Classement