2010-01-28 16 views
0

Je me suis cogné la tête à propos de cette tâche apparemment facile et je pourrais vraiment utiliser de l'aide. J'ai une image large chargée dans le GUI (en utilisant le concepteur ..) et je veux en dessiner seulement une partie, un rectangle. Je dois pouvoir changer cette position rectangle sur la grande image, afin de dessiner une partie différente de l'image plus grande à volonté. Dans ce processus, le rect doit maintenir sa taille. En utilisant l'objet Ui :: MainWindow, je peux accéder à l'étiquette contenant l'image et une solution qui implique l'utilisation de cette option est préférable (pour suivre le reste du code que j'ai déjà écrit)Qt - Tracer un Rect/Frame sur une plus grande image Pixmap

Toute solution sera très appréciée :)

Merci,

Itamar

Répondre

1

Je certainement (pour la facilité d'utilisation) il suffit de placer un label vide comme espace réservé dans designer.

Ensuite, implémentez le paintEvent pour cette étiquette (déléguez-le à votre propre méthode). Vous devrez également regarder dans QPainter, QPixMap, etc ... Devrait être faisable basé sur ces conseils et la documentation.

Si vous en voulez plus, je vous suggère de fournir un petit extrait de code sur lequel travailler.

+0

Merci de votre aide. J'ai créé une classe d'étiquettes et surchargé paintEvent. mais mon paintEvent n'est jamais appelé lorsque j'appelle repaint(). En outre, quand je interroge myLabel-> isVisible(), je reçois toujours "False" bien qu'il soit placé dans l'interface utilisateur. – Ita

+0

@Ita: Vous n'avez peut-être pas promu votre libellé d'espace réservé pour le type dérivé. –

0

Si vous voulez faire cela plus ou moins purement par le concepteur, vous pouvez mettre un QScrollArea où vous voulez que la partie de l'image apparaisse. Si vous définissez la règle de barre de défilement de la zone de défilement pour qu'elle ne s'affiche jamais, vous pouvez modifier manuellement la partie visible via le widget de zone de défilement. Cependant, cela serait probablement plus complexe que de créer un widget dérivé et de réimplémenter la fonction de peinture.