2009-10-21 7 views
3

J'ai créé un certain type de widgets QLabel dans QT, et ajouté cela à une barre QToolbar. Je veux mettre en évidence le widget particulier qui est sous le curseur. Je suis incapable de comprendre comment je fais ça. Quelqu'un peut-il m'aider? J'ai besoin de cette information sur QT 4.Qwidget, comment mettre en évidence le widget sous le curseur

Merci.

Répondre

9

Vous avez plusieurs possibilités. Tout d'abord, comme vous sous-classez QLabel, vous pouvez gérer mouse events directement dans votre classe. Assurez-vous d'utiliser QWidget :: setMouseTracking() pour l'activer. Dans un tel scénario, vous pouvez faire ce que vous voulez avec votre contrôle, mais vous devrez surcharger la routine de peinture afin que votre classe puisse se dessiner d'une manière spécifique.

Malheureusement, QLabel ne prend pas en charge l'état de la feuille de style "hover" de sorte que vous ne pouvez pas le faire facilement avec des feuilles de style. Cependant, si vous considérez sous-classer de QPushButton vous pouvez avoir cette fonctionnalité merveilleuse ainsi qu'avec l'aide de CSS vous obtenez l'effet de highliting gentil. Pour plus d'informations sur les feuilles de style en QT, regardez here.

Si le sous-classement QPushButton vous convient, recherchez here. Assurez-vous que vous utilisez également état de vol stationnaire comme dans cet exemple simple:

QPushButton:hover { 
    background-color: black; 
} 
QPushButton:hover { 
    background-color: white; 
} 

Exemple pour les événements de souris de manipulation se trouve here

+0

Salut, Merci pour votre réponse. Pourriez-vous s'il vous plaît me diriger vers un exemple spécifique où les événements de souris sont gérés pour QLabel. J'ai aussi essayé d'utiliser QPushButton, mais il montre des images et tout, ce que je ne veux pas, c'est pourquoi j'ai utilisé QLabel. Mais s'il vous plaît pointez-moi aussi sur un exemple de code de QPushButton. merci. – MnshSnghl

+0

J'ai mis à jour le poste avec quelques liens vers des exemples. – alexkr

+0

Vous ne pouviez pas faire la peinture vous-même, mais juste changer la couleur d'arrière-plan de la palette sur les événements souris/souris. Cela devrait être suffisant. –

Questions connexes