我有一个Qt对话框应用程序。现在我不希望该对话框可以调整大小。我不知道如何实现这一目标。我尝试了很多东西但仍然在对话框启动时可以调整此对话框的大小。
我应该设置什么属性来禁用对话框/窗口小部件调整大小。
我也试过
setSizePolicy(QSizePolicy::Fixed);
但我得错误说..
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'
请帮我解决这个问题。
答案 0 :(得分:100)
您获得的编译错误是因为您尝试将QSizePolicy::Policy
传递给setSizePolicy(QSizePolicy)
,但没有从QSizePolicy::Policy
(这是一个维度的政策)到{{}的隐式转换1}}(这是一个包含每个维度(高度,宽度)一个QSizePolicy
的类。但是,Policy
无论如何都不适用于顶级窗口小部件(Windows)。
QSizePolicy
仅在您事先知道对话框的大小时才有效(通常不会,更改字体大小和语言)。你可以做到
setFixedSize()
但使用
要好得多window()->setFixedSize( window()->sizeHint() );
这使得布局可以确定对话框的大小,但不允许调整大小,我认为这是你要求的。
答案 1 :(得分:50)
我不知道你是否已经尝试过,但QWidget::setFixedSize
应该做你想做的事情
答案 2 :(得分:22)
this->setFixedSize(this->width(),this->height());
答案 3 :(得分:8)
您需要更改对话框的windowFlags并将其设置为Qt :: MSWindowsFixedSizeDialogHint。
这仅适用于Windows 。
有关详细信息,请参阅此示例: http://doc.qt.digia.com/4.5/widgets-windowflags.html
答案 4 :(得分:4)
如果您使用QtCreator(当然是您),您可以将属性HorizontalsizePolicy设置为fixed,Vertical Policy也设置为Fixed。然后,您可以将maximumSize设置为所需的尺寸。窗口不会再次最大化。
答案 5 :(得分:3)
在QT Creator上,在UI编辑器中,单击属性窗口中的顶部对象,然后在“布局”部分的底部滚动。您应该看到layoutSizeConstraint属性。
将layoutSizeConstraint
设置为SetFixedSize
。
答案 6 :(得分:2)
在代码中你可以做这样的事情,
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中执行以下操作,
答案 7 :(得分:1)
从Qt文档中,setSizePolicy()
方法要么采用零参数,要么采用两个参数,但不能是一个参数。这就是你得到这个编译错误的原因。从我的实验中,如果你没有设置固定的大小。这种方法没用。窗口仍然可以调整大小。
答案 8 :(得分:0)
如果您正在使用QML设计UI并使用QDeclarativeView启动,请尝试以下代码。
QScopedPointer<QmlApplicationViewer> viewer(QmlApplicationViewer::create());
.
.
.
//To make the window non-resizable
viewer->setFixedSize(viewer->width(),viewer->height());
此处QmlApplicationViewer派生自QDeclarativeView。