Qtダイアログアプリケーションがあります。今、私はそのダイアログのサイズを変更したくありません。これを達成する方法がわかりません。いろいろ試してみましたが、それでもダイアログが起動したときにこのダイアログのサイズを変更できます。
ダイアログ/ウィジェットのサイズ変更を無効にするために設定する必要があるプロパティは何ですか。
私も試しました
setSizePolicy(QSizePolicy::Fixed);
しかし、次のようなエラーが表示されます。
source\nimcac_settingsMain.cpp(36):エラーC2248: ** 'QSizePolicy :: QSizePolicy':クラス 'QSizePolicy' ** pで宣言されたプライベートメンバーにアクセスできません:\ThirdPartyExports\Qt\export\4.3\4.3.1f14\include\QtGui\../../ src\gui\ kernel\qsizepolicy.h(177):「QSizePolicy :: QSizePolicy」の宣言を参照 p:\ ThirdPartyExports\Qt\export\4.3\4.3.1f14\include\QtGui\../../ src\gui\ kernel\qsizepolicy.h(34):宣言を参照「QSizePolicy」
これで私を親切に助けてください。
すでに試してみたかどうかはわかりませんが、QWidget::setFixedSize
あなたがしたいことをすべき
コンパイルエラーは、_QSizePolicy::Policy
_をsetSizePolicy(QSizePolicy)
に渡そうとしているが、_QSizePolicy::Policy
_(1つのディメンションのポリシー)からQSizePolicy
(これに暗黙的に変換されないため)とりわけ、次元(高さ、幅)ごとに1つのPolicy
を含むクラスです。とにかく、QSizePolicy
はトップレベルのウィジェット(ウィンドウ)では機能しません。
setFixedSize()
は、ダイアログのサイズが事前にわかっている場合にのみ機能します(通常は、フォントサイズと言語の変更に関してはわかりません)。できるよ
_window()->setFixedSize( window()->sizeHint() );
_
しかし、それは使用する方がはるかに良いです
_window->layout()->setSizeConstraint( QLayout::SetFixedSize );
_
これにより、レイアウトでダイアログのサイズを決定できますが、サイズ変更は許可されません。
this->setFixedSize(this->width(),this->height());
ダイアログのwindowFlagsを変更し、Qt :: MSWindowsFixedSizeDialogHintに設定する必要があります。
これはWindowsでのみ機能します。
詳細については、この例を参照してください。 http://doc.qt.digia.com/4.5/widgets-windowflags.html
QtCreatorを使用している場合(もちろんあなたもそうです)、HorizontalsizePolicyプロパティをfixedに、Vertical PolicyもFixedに設定できます。その後、maximumSizeを必要な寸法に設定できます。ウィンドウは再び最大化されません。
QT CreatorのUIエディターで、プロパティウィンドウの上部のオブジェクトをクリックし、レイアウトパーツの下部をスクロールします。 layoutSizeConstraintプロパティが表示されます。
layoutSizeConstraint
をSetFixedSize
に設定します。
コードでは、次のようなことができます。
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);
QtCreatorで次のようにします。
Qtのドキュメントによると、setSizePolicy()
メソッドは引数がゼロまたは2つの引数を取りますが、1つの引数を取ることはできません。そのため、このコンパイルエラーが発生します。私の実験から、固定サイズを設定しない場合。この方法には意味がありません。ウィンドウはサイズ変更可能です。
QMLでUIを設計し、QDeclarativeViewを使用して起動する場合は、以下のコードを試してください。
QScopedPointer<QmlApplicationViewer> viewer(QmlApplicationViewer::create());
.
.
.
//To make the window non-resizable
viewer->setFixedSize(viewer->width(),viewer->height());
ここで、QmlApplicationViewerはQDeclarativeViewから派生しています。