Comment définir la feuille de style pour l'élément courant dans le QTableView
Quand QTableView
contrôle d'édition est visible pour l'élément courant de la shylesheet de le modifier. Quand il n'y a aucun contrôle d'édition dans le QTableView
l'élément actuel est de style à l'aide de la QTableView { selection-background-color: }
Comment définir un style différent seulement pour l'élément courant?
OriginalL'auteur Uga Buga | 2014-05-29
Vous devez vous connecter pour publier un commentaire.
Qt feuilles de style de soutien sous-contrôles et de la pseudo-unis, vous pouvez l'utiliser pour améliorer votre personnalisation. (voir http://qt-project.org/doc/qt-5/stylesheet-reference.html#list-of-pseudo-states )
Dans ce cas, vous pouvez utiliser le
::item
sous le contrôle et la:focus
pseudo état (le "courant" pseudo état n'existe pas, mais la:focus
fait la même chose).C'est un exemple que vous pouvez utiliser:
Voir aussi http://qt-project.org/doc/qt-5/stylesheet-examples.html#customizing-qtreeview
Quel est le problème? Avant de poster ma réponse, j'ai testé dans un QTableView et il fonctionne.
Heureusement, vous avez raison. Votre solution fonctionne sur un projet vierge. Il semble qu'il y a un style de problème dans mon grand projet dont il convient de poursuivre les recherches.
Cependant, il travaille pour la sélection, mais ne peut toujours pas uniquement pour l'élément courant.
Il fonctionne, mais seulement si la table a le focus. Lorsque la table perd la mise au point sur la sélection devient grise et de l'élément en cours ne peuvent pas être distingués.
OriginalL'auteur Fabio
1. Comme il IGHOR dit, vous pouvez utiliser les données() la méthode de votre modèle et de fournir une couleur lorsque le rôle est Qt::BackgroundColor. Mais il y a un faux ici parce que vous ne savez pas si indice est courant ou non. Vous aurez devrait définir un index courant dans le modèle lorsqu'il change et ensuite faire une case comme ceci:
En fait c'est pas la meilleure idée de dire le modèle sur currentIndex selon le Modèle/modèle d'Affichage, parce que vous pouvez avoir deux points de vue pour un modèle.
2. Les Descendants de QAbstractItemView a la méthode setItemDelegate. Un délégué est utilisé pour dessiner une cellule.
Tous vous avez besoin est d'hériter de QStyledItemDelegate, de passer un pointeur vers le point de vue du délégué et de remplacer la méthode initStyleOption.
Puis faire quelque chose comme ceci:
3. Si vous avez vraiment besoin d'utiliser css (par exemple, vous avez des thèmes), vous pouvez le faire de cette façon:
Ajouter quelque chose comme ceci dans votre fichier css:
Modifier initStyleOption à partir de l'exemple précédent pour utiliser la propriété:
Avec cette approche, vous pouvez définir un style spécifique via css pour une colonne, une ligne, une cellule ou un groupe de cellules.
OriginalL'auteur Ezee
Vous avez besoin pour créer un nouveau délégué, qui rend lui-même basé sur le modèle de données (rôle personnalisé, par exemple). Vous avez besoin de la base de son style sur une commande spéciale créée pour l'occasion (qui peut être modifié via la feuille de style) . Je vais poster un peu de code quand je trouve le temps.
On peut utiliser les variadic templates, et les pfi (Coplien) pour le bon effet pour la couche de ses délégués
OriginalL'auteur Werner Erasmus