Qt:如何设置QVBoxLayout的最大宽度

11

我目前有一个水平布局,其中包含两个垂直布局。VLayout1VLayout2。现在我想为VLayout1设置一个最大宽度限制,以便如果表单在此之后扩展,只有VLayout1会扩展。
您有什么建议可以实现这一点吗?

2个回答

13

你可以进行一次“hack”,将你的布局放在一个小部件内,在此你可以定义其最大宽度:

QWidget *controlsRestrictorWidget = new QWidget();
QVBoxLayout *layoutVControls = new QVBoxLayout();
controlsRestrictorWidget->setLayout(layoutVControls);
controlsRestrictorWidget->setMaximumWidth(350);

它有效 :)


0

您无法设置 QVBoxLayout 的最大尺寸。您可能需要在布局包含的小部件上设置最大尺寸。如果您想要其中一个布局拉伸而另一个保持相同尺寸,则可以在主窗口构造函数中尝试以下操作:

   QPushButton* btn1 = new QPushButton("Button1");
   QPushButton* btn2 = new QPushButton("Button2");
   QHBoxLayout* hLayout = new QHBoxLayout;
   QVBoxLayout* vLayout1 = new QVBoxLayout;
   QVBoxLayout* vLayout2 = new QVBoxLayout;

   hLayout->addLayout(vLayout1, 1);
   hLayout->addLayout(vLayout2, 0);
   vLayout1->addWidget(btn1);
   vLayout2->addWidget(btn2);

   QWidget* placeholder = new QWidget;
   placeholder->setLayout(hLayout);
   setCentralWidget(placeholder);

如果您现在调整窗口大小,您将看到包含Button2的布局会被拉伸,而包含Button1的布局保持相同的大小。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接