J'ai une application de dialogue Qt. Maintenant, je ne veux pas que ce dialogue soit redimensionnable. Je ne sais pas comment y parvenir. J'ai essayé beaucoup de choses, mais quand la boîte de dialogue est lancée, elle peut être redimensionnée.
Quelle est la propriété que je devrais définir pour désactiver le redimensionnement de la boîte de dialogue/widget?.
J'ai aussi essayé
setSizePolicy(QSizePolicy::Fixed);
Mais je reçois une erreur en disant ..
source\nimcac_settingsMain.cpp (36): erreur C2248: ** 'QSizePolicy :: QSizePolicy': impossible d'accéder au membre privé déclaré dans la classe 'QSizePolicy' ** p:\ThirdPartyExports\Qt\export\4.3\4.3.1f14\include\QtGui\../../ src\gui\ kernel\qsizepolicy.h (177): voir la déclaration de 'QSizePolicy :: QSizePolicy' p:\ThirdPartyExports\Qt\export\4.3\4.3.1f14\include\QtGui\../../ src\gui\ kernel\qsizepolicy.h (34): voir la déclaration de QSizePolicy.
Aidez-moi avec ça.
Je ne sais pas si vous l'avez déjà essayé, mais QWidget::setFixedSize
devrait faire ce que vous voulez
L'erreur de compilation que vous obtenez est due au fait que vous essayez de passer un QSizePolicy::Policy
à setSizePolicy(QSizePolicy)
, mais il n'y a pas de conversion implicite de QSizePolicy::Policy
(qui est la politique d'une dimension) à QSizePolicy
(qui est une classe contenant, entre autres, un Policy
par dimension hauteur largeur)). QSizePolicy
ne fonctionne cependant pas sur les widgets de niveau supérieur (fenêtres).
setFixedSize()
ne fonctionne que si vous connaissez la taille de la boîte de dialogue à l’avance (et en général vous ne la connaissez pas en changeant la taille et la langue des polices). Tu peux faire
window()->setFixedSize( window()->sizeHint() );
mais il vaut beaucoup mieux utiliser
window->layout()->setSizeConstraint( QLayout::SetFixedSize );
Cela permet à la disposition de déterminer la taille de la boîte de dialogue, mais n'autorise pas le redimensionnement, ce que je suppose, c'est ce que vous demandiez.
this->setFixedSize(this->width(),this->height());
Vous devez modifier le windowFlags de la boîte de dialogue et le définir sur Qt :: MSWindowsFixedSizeDialogHint.
Cela ne fonctionne que dans les fenêtres.
Pour plus d'informations, veuillez consulter cet exemple: http://doc.qt.digia.com/4.5/widgets-windowflags.html
Si vous utilisez QtCreator (vous l’êtes bien entendu), vous pouvez définir la propriété HorizontalsizePolicy sur fixed et la stratégie verticale également sur Fixed. Ensuite, vous pouvez définir la taille maximale aux dimensions souhaitées. La fenêtre ne sera pas agrandie à nouveau.
Dans le code, vous pouvez faire quelque chose comme ça,
Dialog->resize(581, 292);
QSizePolicy sizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
sizePolicy.setHorizontalStretch(0);
sizePolicy.setVerticalStretch(0);
sizePolicy.setHeightForWidth(WaterLevelEditorDialog->sizePolicy().hasHeightForWidth());
Dialog->setSizePolicy(sizePolicy);
Dialog->setMinimumSize(QSize(581, 292));
Dialog->setMaximumSize(QSize(581, 292));
Dialog->setSizeGripEnabled(false);
Dans QtCreator, procédez comme suit:
Sous QT Creator, dans l'éditeur d'interface utilisateur, cliquez sur l'objet du haut dans la fenêtre des propriétés, puis faites défiler en bas dans la partie Présentation. Vous devriez voir la propriété layoutSizeConstraint.
Définissez layoutSizeConstraint
sur SetFixedSize
.
Dans la documentation Qt, la méthode setSizePolicy()
ne prend aucun argument ou deux arguments mais ne peut pas être un argument. C'est pourquoi vous obtenez cette erreur de compilation. De mon expérience, si vous ne définissez pas la taille fixe. Cette méthode n'a aucune utilité. La fenêtre peut toujours être redimensionnable.
Si vous concevez une interface utilisateur dans QML et lancez à l'aide de QDeclarativeView, essayez le code ci-dessous.
QScopedPointer<QmlApplicationViewer> viewer(QmlApplicationViewer::create());
.
.
.
//To make the window non-resizable
viewer->setFixedSize(viewer->width(),viewer->height());
QmlApplicationViewer est dérivé de QDeclarativeView.