Domanda

Ho un Qt finestra di applicazione.Ora io non voglio che la finestra di dialogo per essere ridimensionabili.Io non sono sicuro di come ottenere questo risultato.Ho provato un sacco di cose, ma ancora quando la finestra di dialogo avvia questa finestra può essere ridimensionata.

Che cosa è la proprietà che dovrei impostare per disattivare la finestra di dialogo/Widget di ridimensionare.

Ho provato anche

setSizePolicy(QSizePolicy::Fixed);

Ma mi da un errore dicendo..

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'

Gentilmente darmi una mano con questo.

È stato utile?

Soluzione

Non so se avete già provato, ma QWidget::setFixedSize dovrei fare quello che vuoi

Altri suggerimenti

L'errore di compilazione si ottiene è perché si tenta di passare un QSizePolicy::Policy a setSizePolicy(QSizePolicy), ma non c'è conversione implicita da QSizePolicy::Policy (che è la politica per una dimensione) a QSizePolicy (che è una classe che contiene, tra le altre cose, uno Policy per dimensione (altezza, larghezza)). QSizePolicy non funziona sui widget di primo livello (finestre) in ogni caso, però.

setFixedSize() funziona solo se si conosce la dimensione della finestra di dialogo in anticipo (e di solito non lo fai, quello che con mutevoli dimensioni dei caratteri e lingue). Si può fare

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

, ma è molto meglio usare

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

che lascia il layout di determinare le dimensioni della finestra di dialogo, ma non consente il ridimensionamento, che presumo è quello che stavi chiedendo.

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

È necessario modificare le windowFlags della finestra e impostarlo su Qt :: MSWindowsFixedSizeDialogHint.

Questo funziona solo in Windows .

Per ulteriori informazioni si prega di consultare questo esempio: http://doc.qt.digia.com/4.5/widgets-windowflags. html

Se si utilizza QtCreator (ovviamente sei) è possibile impostare la proprietà HorizontalsizePolicy alla politica verticale fissa e anche per fisso. Quindi è possibile impostare la MaximumSize per le dimensioni desiderate. La finestra non ci permetterà di ottimizzare di nuovo.

Il Qt Creator, nell'editor di interfaccia utente, fare clic sull'oggetto in alto nella finestra delle proprietà, quindi scorrere in basso nella parte Layout. Si dovrebbe vedere la proprietà layoutSizeConstraint.

Imposta il layoutSizeConstraint a SetFixedSize.

Nel codice si può fare qualcosa di simile,

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

In QtCreator fare come segue,

  1. Selezionare la finestra di dialogo widget
  2. Individuare la finestra di dialogo widget in Oggetto Finestra
  3. Nella Finestra di Oggetto, fare clic destro sulla finestra di dialogo oggetto di un menu a comparsa
  4. Selezionare "Dimensione Vincoli" -> "Imposta Dimensione Massima" dal menu
  5. Fare di nuovo clic destro sulla finestra di dialogo oggetto di un menu a comparsa
  6. Selezionare "Dimensione Vincoli" -> "Set Minimo"Dimensione
  7. Nella Finestra Proprietà,
    • garantire "sizePolicy"->"Orizzontale Politica" ha il valore "Fisso"
    • garantire "sizePolicy"->"Verticale Politica" ha il valore "Fisso"
    • garantire "sizeGripEnabled" non è selezionata

Dalla documentazione Qt, metodo setSizePolicy() sia prende argomento zero o due argomenti, ma non può essere un argomento. Ecco perché si ottiene questo errore di compilazione. Dal mio esperimento, se non si imposta la dimensione fissa. Questo metodo non ha alcun uso. La finestra può essere ancora ridimensionabile.

Nel caso in cui si sta progettando interfaccia utente in QML e lanciando utilizzando QDeclarativeView, provare il codice qui sotto.

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

Qui QmlApplicationViewer è derivato da QDeclarativeView.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top