2009-09-30 14 views
3

Je suis en train d'écrire une simulation de l'écran d'un périphérique embarqué (qui contient des widgets personnalisés sur un QWidget principal), et bien que la taille native de l'écran soit de 800x600, je veux pouvoir faites-le monter et descendre en faisant glisser le coin de la fenêtre. Sans tricher avec les mises en page de la grille et les bretelles (qui n'alourdiront pas les polices de haut en bas), comment puis-je accomplir ce genre de zoom? Je pense qu'une partie de la solution pourrait être de créer un QTransform et de l'injecter dans le QWidget pour l'application entière, ou son QPaintDevice ou QPaintEngine. Je voudrais le faire sans mettre QTransform dans chaque widget personnalisé, juste la "fenêtre principale" QWidget.Peinture évolutive d'une application Qt

Répondre

5

Ceci est possible si vous utilisez QGraphicsView comme widget d'affichage principal. QGraphicsScene prend désormais en charge les widgets en tant que contenu, vous pouvez donc les mettre à l'échelle.

Je crois que l'alternative est de réimplémenter la peinture() pour chaque widget, et de définir manuellement la transformation/échelle avant la peinture des widgets enfants.

+1

Cela fonctionne bien - merci! Voici plus de détails sur ce que j'ai fait: Tout d'abord, suivez les instructions pour montrer un QGraphicsScene dans un QGraphicsView. Pour obtenir l'effet de zoom, dérivez de QGraphicsView et redéfinissez resizeEvent(), en appelant 'fitInView (items() [0]);'. Fonctionne comme un champion! (N'avez pas encore assez de représentant pour vous voter - désolé). – Scott

+0

Vous pourriez marquer sa réponse comme correcte cependant. – chrism1

+0

Désolé, cela a pris plus d'un an ... – Scott

0

Un peu de deviner ici car je ne l'ai pas essayé ... mais vous pouvez essayer de mettre le widget de haut niveau dans un QGraphicsView puis obtenir le QGraphicsView pour faire la mise à l'échelle. Vous pouvez ensuite activer OpenGL sur QGraphicsView et le mettre à l'échelle dans le matériel pour qu'il soit agréable et rapide.

Questions connexes