Qt 一个 widget中有三个垂直布局的group,设置三个group界面上可通过上下移调整大小
时间: 2024-09-29 07:11:44 浏览: 31
在Qt中,如果你想要在一个QWidget上创建三个垂直布局的GroupBox并且允许它们上下调整大小,你需要使用QVBoxLayout或者QStackedLayout。下面是一个使用QVBoxLayout的例子,因为QStackedLayout通常用于切换不同视图,不太适合直接调整大小。
首先,你需要创建一个主窗口`mainWindow`,然后在其内部添加一个QWidget,并将QWidget分配给一个名为`container`的变量:
```cpp
#include <QMainWindow>
#include <QWidget>
#include < QVBoxLayout>
#include < QStackedLayout>
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr)
: QMainWindow(parent)
{
QWidget *centralWidget = new QWidget(this);
QVBoxLayout *verticalLayout = new QVBoxLayout(centralWidget);
// 创建三个GroupBox
QGroupBox *groupBox1 = new QGroupBox("Group 1", centralWidget);
QGroupBox *groupBox2 = new QGroupBox("Group 2", centralWidget);
QGroupBox *groupBox3 = new QGroupBox("Group 3", centralWidget);
// 使用 QVBoxLayout 对每个 groupBox 进行布局
QVBoxLayout *groupLayout1 = new QVBoxLayout(groupBox1);
QVBoxLayout *groupLayout2 = new QVBoxLayout(groupBox2);
QVBoxLayout *groupLayout3 = new QVBoxLayout(groupBox3);
// 在 main layout 中添加 group box
verticalLayout->addWidget(groupBox1);
verticalLayout->addWidget(groupBox2);
verticalLayout->addWidget(groupBox3);
// 如果你想让它们可以垂直调整大小,可以启用每个 QVBoxLayout 的stretch 属性
groupLayout1->setStretchFactor(0, 1); // 设置 stretch factor 为 1 或者其他的值,取决于需求
groupLayout2->setStretchFactor(0, 1);
groupLayout3->setStretchFactor(0, 1);
centralWidget->setLayout(verticalLayout);
setCentralWidget(centralWidget);
}
};
```
在这个例子中,我们为每个GroupBox设置了垂直布局,并设置了它们各自的stretch factor,这使得它们可以根据需要填充剩余的空间。但是要注意的是,由于QVBoxLayout默认不允许控件之间直接相互覆盖,所以除非有特殊的处理,否则直接调整一个groupBox的高度不会影响另一个groupBox的显示。
阅读全文