Redimensionner la fenêtre pour s'adapter contenu
J'ai un QGLWidget, je veux redimensionner à une résolution donnée (plus grand que le contenant de la fenêtre).
Mon intention est, que la fenêtre s'étend jusqu'à ce que le widget s'adapte à l'intérieur, mais ne peut pas trouver un moyen de le faire.
J'ai essayé plusieurs commandes après le redimensionnement de la QGLWidget pour le faire fonctionner sans succès.
Je vais énumérer les résultats ici:
- ne rien faire d'autre: Le Widget recouvre la totalité de la fenêtre. Par la suite il sera redimensionné pour s'adapter à nouveau dans la petite fenêtre
mainWindow.adjustSize()
: Le widget est redimensionnée à (0, 0)mainWindow.resize(mainWindow.sizeHint())
: voir ci-dessusmainWindow.resize(mainWindow.minimumSizeHint())
: voir ci-dessus
J'ai également lu dans ce fil, qu'avant de faire la mainWindow redimensionner je la boucle d'événement doit être exécuté pour recalculer les nouvelles tailles, de sorte que j'ai inséré QCoreApplication::processEvents
de le faire, sans aucun effet visible.
Alors, comment puis-je redimensionner la fenêtre via le widget?
Modifier
La GLWidget n'est pas le seul widget de la fenêtre.
Il est incorporé dans un séparateur avec une zone de groupe.
OriginalL'auteur Nobody | 2013-05-09
Vous devez vous connecter pour publier un commentaire.
http://qt-project.org/doc/qt-4.8/qwidget.html#sizePolicy-prop
http://qt-project.org/doc/qt-4.8/qsizepolicy.html#Policy-enum
http://qt-project.org/doc/qt-4.8/qwidget.html#setFixedSize
Donc en supposant que vous avez votre
QGLWidget
imbriquée à l'intérieur de votreQMainWindow
central widget, vous devez définir la taille de la politique de votreQGLWidget
.Par exemple:
...
Espère que ça aide.
Sets both the minimum and maximum sizes of the widget to s, thereby preventing it from ever growing or shrinking.
j'ai juste essayé de sauvegarder et de restaurer l'ancien tailles minimale et maximale, mais cela entraîne pas de changement à tous.Au lieu de
setFixedSize()
, essayezsetMinimumSize()
, et l'utilisationsetSizePolicy()
. Vous avez vraiment beaucoup de contrôle sur la façon dont les choses d'élargir et de réagir à l'aide desetSizePolicy()
.setFixedSize()
fait un tas de choses à la fois, de sorte qu'il n'est probablement pas ce que vous voulez dans ce cas.minimumSize
semble également pas une bonne chose pour moi. L'utilisateur doit être en mesure de redimensionner de manière arbitraire. J'ai juste besoin de la fenêtre de pop à la taille qui s'adapte à la taille demandée de laQGLWidget
.Hm il semble y avoir aucune
setSizeHint()
fonction. Et nethis->resize(glw->sizeHint()
la fenêtre est trop petite (à cause des frontières et autres widgets)?Vous êtes de droite. Voici l'explication détaillée sur: qt-project.org/doc/qt-4.8/application-windows.html
OriginalL'auteur phyatt
J'ai une application qui doit être très similaire à vos exigences, donc je vais poster ma solution ici. Une image couvrant la fenêtre qui est librement extensible et rétractable, et peut être modifiée à la taille d'origine, et de rester extensible /rétractable suite.
J'ai utilisé un QLabel widget pour afficher l'image, mais il devrait fonctionner avec d'autres types de widgets. J'ai créé un widget avec une taille initiale et la
QSizePolicy::Ignored
.L'étiquette widget a été dans un QVBoxLayout avec quelques boutons dans la fenêtre, mais cela peut fonctionner avec d'autres types de mise en page trop.
La fenêtre et le widget d'image peut être redimensionnée à l'image de la taille d'origine avec ce code:
adjustSize()
sur la fenêtre réduit la fenêtre en dessous de la taille du widget. C'est peut-être causé par les répartiteurs que j'utilise.OriginalL'auteur gregn3