Comment définir une taille initiale de un QScrollArea?
Je sais que c'est un très spécifique en C++ et Qt liés à la question, mais peut-être que quelqu'un peut m'aider, de toute façon ...
Voir le code ci-dessous: je veux afficher une image dans une zone de défilement. Le port de la vue de la zone de défilement ont une taille initiale. Cela signifie que, si la taille de votre image est plus grande que la taille initiale de la fenêtre d'affichage, barres de défilement sera visible, pas autrement.
//create label for displaying an image
QImage image( ":/test.png" );
QLabel *label = new QLabel( this );
label->setPixmap( image.toPixmap() );
//put label into scroll area
QScollArea *area = new QScrollArea( this );
area->setWidget( label );
//set the initial size of the view port
//NOTE: This is what I'd like to do, but this method does not exist :(
area->setViewPortSize( QSize( 300, 300 ) );
Il doit être possible de redimensionner l'ensemble de l'application, de sorte que le port de la vue obtiendrez une autre taille que la première.
Malheureusement je n'étais pas en mesure de savoir, comment définir la taille de la fenêtre d'affichage. Qt présentation du mécanisme semble définir une taille par défaut pour le port de la vue, mais jusqu'à maintenant je n'étais pas en mesure de le changer. Définition d'une nouvelle taille avec
area->setMinimumSize( QSize( 300, 300 ) );
sera effectivement donné le montant demandé, mais alors la zone de défilement perd sa capacité à obtenir redimensionnées à une taille plus petite que 300x300.
Des idées?
OriginalL'auteur Thomas Koschel | 2008-10-27
Vous devez vous connecter pour publier un commentaire.
Je pense que vous regardez le problème à l'envers. Le QScrollArea est juste un widget que vous mettez dans un cadre ou une QMainWindow. La taille du widget est contrôlée par la mise en page de la fenêtre qui le contient.
Prendre un coup d'oeil à cet exemple de Trolltech: Visionneuse D'Image Exemple
OriginalL'auteur Dusty Campbell
Est la zone de défilement haut niveau widget? Si oui, il suffit d'appeler
Si c'est à l'intérieur d'une hiérarchie vous avez besoin de redimensionner le toplevel de manière appropriée (complexe), ou de définir la minimumSize de la région. Vous pouvez également essayer d'expérimenter avec la LayoutPolicy - en supposant que le sizeHint est QSize(300,300), vous pouvez lui donner la taille appropriée de la politique selon ce qui est défini dans http://doc.trolltech.com/4.4/qsizepolicy.html#Policy-enum
OriginalL'auteur Henrik Hartz
Vous pouvez essayer:
Cependant mise en page et Qt est étonnamment Vaudou. C'est de l'OMI à sa moins fonctionnel de la partie.
si cela ne fonctionne pas, essayez d'appeler QWidget::resize() sur les différents widgets.
OriginalL'auteur mxcl
Je ne pense pas que vous pouvez faire exactement cela très facilement, ce qui est (si je suis en train de lire correctement), la taille du widget de sorte que la zone interne est 300x300. Vous pourriez être en mesure de fudge, cependant, depuis une zone de défilement est un type de trame, qui hérite de QWidget. Cela signifie que vous pouvez simplement appeler
area->resize( 300 + fudge, 300 + fudge )
, où votre fudge valeurs de tenir compte de la plus peu pris par le cadre du dessin.Je ne suis pas sûr que ce serait le travail dans la dynamique d'une boîte de dialogue redimensionnables, cependant. Je n'ai jamais fait quoi que ce soit tout à fait comme cela.
OriginalL'auteur Caleb Huitt - cjhuitt
Si vous essayez d'afficher une image à l'intérieur d'une zone de défilement, votre meilleur pari ne va pas avec une étiquette.
Vous devez essayer d'utiliser un QGraphicsView/QGraphicsScene/QGraphicPixmapItem (au lieu de la Zone de Défilement et de l'étiquette). Le rendement est de loin meilleure que lors de l'affichage des images. La zone de défilement et de l'étiquette de re-dessiner l'image très médiocre comme vous déplacer en utilisant les barres de défilement.
Par exemple, vous avez un ".l'interface utilisateur" fichier avec un QGraphicsView sur l'interface graphique appelée "qgvImageView" et un QImage appelé "image"...
Consultez la Documentation de QT. BTW: Cela a été introduit dans Qt 4.2
Je ne sais pas si ce sera précisément de résoudre le problème, mais il ya une chance que le QGraphicsView réagira mieux à ce que vous essayez de faire.
OriginalL'auteur
Comment sur l'utilisation de
OriginalL'auteur Alpants