Question

J'ai une application Qt dialogue. Maintenant, je ne veux pas cette boîte de dialogue pour être redimensionnable. Je ne suis pas sûr de savoir comment y parvenir. J'ai essayé un tas de choses, mais encore quand la boîte de dialogue lance cette boîte de dialogue peut être redimensionnée.

Quelle est la propriété que je dois mettre désactiver la boîte de dialogue / Widget redimensionner.

J'ai aussi essayé

setSizePolicy(QSizePolicy::Fixed);

Mais je reçois une erreur disant ..

source\nimcac_settingsMain.cpp(36) : error C2248:
**'QSizePolicy::QSizePolicy' : cannot access private member declared in class 'QSizePolicy'**
        p:\ThirdPartyExports\Qt\export\4.3\4.3.1f14\include\QtGui\../../src\gui\
kernel\qsizepolicy.h(177) : see declaration of 'QSizePolicy::QSizePolicy'
        p:\ThirdPartyExports\Qt\export\4.3\4.3.1f14\include\QtGui\../../src\gui\
kernel\qsizepolicy.h(34) : see declaration of 'QSizePolicy'

Veuillez me aider avec cela.

Était-ce utile?

La solution

Je ne sais pas si vous avez déjà essayé, mais QWidget::setFixedSize dois faire ce que vous voulez

Autres conseils

L'erreur de compilation que vous obtenez est parce 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 pas sur les widgets de haut niveau (fenêtres) de toute façon, cependant.

setFixedSize() ne fonctionne que si vous connaissez la taille de la boîte de dialogue à l'avance (et le plus souvent que vous ne le faites pas, ce qui à l'évolution des tailles de police et langues). Vous pouvez faire

window()->setFixedSize( window()->sizeHint() );

mais il est préférable d'utiliser

window->layout()->setSizeConstraint( QLayout::SetFixedSize );

qui permet la mise en page de déterminer la taille de la boîte de dialogue, mais ne permet pas le redimensionnement, que je suppose est ce que vous demandez.

this->setFixedSize(this->width(),this->height());

Vous devez modifier les windowFlags de la boîte de dialogue et le mettre à Qt :: MSWindowsFixedSizeDialogHint.

Cela ne fonctionne que dans les fenêtres .

Pour plus d'informations s'il vous plaît voir cet exemple: http://doc.qt.digia.com/4.5/widgets-windowflags. html

Si vous utilisez QtCreator (vous êtes bien sûr) vous pouvez définir la propriété HorizontalsizePolicy à fixe et verticale politique aussi fixe. Ensuite, vous pouvez régler la maximumSize aux dimensions que vous souhaitez. La fenêtre ne sera pas à nouveau maximiser.

Le QT Creator, dans l'éditeur d'interface utilisateur, cliquez sur l'objet du dessus dans la fenêtre des propriétés, puis faites défiler en bas dans la partie de la mise en page. Vous devriez voir la propriété layoutSizeConstraint.

Régler la layoutSizeConstraint à SetFixedSize.

Dans le code que 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,

  1. Sélectionnez le widget boîte de dialogue
  2. Recherchez le widget boîte de dialogue dans la fenêtre d'objets
  3. Dans la fenêtre d'objet, faites un clic droit sur l'objet de boîte de dialogue pour faire apparaître un menu
  4. Sélectionnez "contraintes de taille" -> "Définir la taille maximale" dans le menu
  5. Faites un clic droit sur l'objet à nouveau dialogue pour faire apparaître un menu
  6. Sélectionnez "contraintes de taille" -> "Définir la taille minimum"
  7. Dans la fenêtre Propriété,
    • assurer "sizePolicy" -> "politique horizontale" a une valeur "fixe"
    • assurer "sizePolicy" -> "verticale politique" a une valeur "fixe"
    • assurer "sizeGripEnabled" est pas cochée

A partir de la documentation Qt, la méthode de setSizePolicy() soit nul ou prend l'argument deux arguments, mais ne peut pas être un argument. Voilà 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 pas d'utilisation. La fenêtre peut toujours être redimensionnée.

Dans le cas où vous concevez l'interface utilisateur en QML et le lancement à l'aide QDeclarativeView, essayez le code ci-dessous.

QScopedPointer<QmlApplicationViewer> viewer(QmlApplicationViewer::create());
.
.
.
//To make the window non-resizable
viewer->setFixedSize(viewer->width(),viewer->height());

Ici QmlApplicationViewer est dérivé de QDeclarativeView.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top