Pregunta

Tengo una aplicación de diálogo Qt. Ahora no quiero que el diálogo que ser de tamaño variable. No estoy seguro de cómo lograr esto. He intentado un montón de cosas, pero aún cuando el diálogo de lanzamientos de este cuadro de diálogo puede cambiar de tamaño.

¿Qué es la propiedad que yo debería establecer desconectar la ventana / Widget cambiar el tamaño.

También probé

setSizePolicy(QSizePolicy::Fixed);

Pero me sale un error que dice ..

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'

Por favor me ayude con esto.

¿Fue útil?

Solución

No sé si ya lo intentó, pero QWidget::setFixedSize debería hacer lo que quiera

Otros consejos

El error de compilación que se obtiene es porque intenta pasar una QSizePolicy::Policy a setSizePolicy(QSizePolicy), pero no hay conversión implícita de QSizePolicy::Policy (que es la política para una dimensión) a QSizePolicy (que está conteniendo una clase, entre otras cosas, una Policy por dimensión (altura, anchura)). QSizePolicy no funciona en los widgets de nivel superior (ventanas) de todos modos, sin embargo.

setFixedSize() sólo funciona si se conoce el tamaño de la ventana de diálogo de antemano (y por lo general no lo hace, lo que con el cambio de tamaño de las fuentes e idiomas). Usted puede hacer

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

pero es mucho mejor usar

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

Eso permite determinar la distribución del tamaño de la ventana de diálogo, pero no permite el cambio de tamaño, lo que supongo que es lo que estaba pidiendo.

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

Es necesario cambiar las windowFlags del diálogo y la puso a Qt :: MSWindowsFixedSizeDialogHint.

Esto sólo funciona en las ventanas .

Para obtener más información, véase el siguiente ejemplo: http://doc.qt.digia.com/4.5/widgets-windowflags. html

Si utiliza QtCreator (por supuesto que lo son) se puede establecer la propiedad a HorizontalsizePolicy Política vertical fija y también para fijo. A continuación, se puede establecer el MaximumSize a las dimensiones que desee. La ventana no maximizará de nuevo.

En Qt Creator, en el editor de interfaz de usuario, haga clic en el objeto superior en la ventana de propiedades, a continuación, desplazarse en la parte inferior de la parte de la presentación. Debería ver la propiedad layoutSizeConstraint.

Ajuste el layoutSizeConstraint a SetFixedSize.

En el código se puede hacer algo como esto,

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);

En QtCreator hacer de la siguiente manera:

  1. Seleccione el widget cuadro de diálogo
  2. Busque el widget de cuadro de diálogo en la ventana de objetos
  3. En la ventana de objetos, haga clic en el objeto de cuadro de diálogo para un menú emergente
  4. Seleccione "limitaciones de tamaño" -> "Establecer Tamaño máximo" del menú
  5. Haga clic derecho en el nuevo objeto de diálogo para un menú emergente
  6. Seleccione "limitaciones de tamaño" -> "Establecer tamaño mínimo"
  7. En la ventana de propiedades,
    • garantizar "sizePolicy" -> "política horizontal" tiene el valor "fijo"
    • garantizar "sizePolicy" -> "Política vertical" tiene el valor "Fixed"
    • garantizar "sizeGripEnabled" no está marcada

A partir de la documentación de Qt, ya sea setSizePolicy() método toma argumento cero o dos argumentos, pero no puede ser un argumento. Es por eso que este error de compilación. Desde mi experiencia, si no ajusta el tamaño fijo. Este método no tiene ningún uso. La ventana puede seguir siendo de tamaño variable.

En caso de que usted está diseñando la interfaz de usuario en QML y el lanzamiento usando QDeclarativeView, probar el código de abajo.

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

Aquí QmlApplicationViewer se deriva de QDeclarativeView.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top