C++Qt用QgridLayout实现三个QgroupBox竖着排列时出现三个QgroupBox放置位置在一起没有分开
时间: 2023-06-12 11:08:08 浏览: 208
可以使用QVBoxLayout来实现三个QGroupBox竖着排列,然后将每个QGroupBox添加到QVBoxLayout中即可。具体实现代码如下:
```cpp
// 创建三个QGroupBox
QGroupBox *groupBox1 = new QGroupBox("GroupBox 1");
QGroupBox *groupBox2 = new QGroupBox("GroupBox 2");
QGroupBox *groupBox3 = new QGroupBox("GroupBox 3");
// 创建QVBoxLayout
QVBoxLayout *layout = new QVBoxLayout;
// 将三个QGroupBox添加到QVBoxLayout中
layout->addWidget(groupBox1);
layout->addWidget(groupBox2);
layout->addWidget(groupBox3);
// 设置窗口的主布局为QVBoxLayout
QWidget *widget = new QWidget;
widget->setLayout(layout);
setCentralWidget(widget);
```
这样,三个QGroupBox就会竖着排列,且彼此之间有一定的距离,不会挤在一起。如果需要设置QGroupBox的样式,可以使用QSS(Qt Style Sheets)来设置。
相关问题
C++Qt用QgridLayout实现四个QgroupBox竖着排列时出现四个QgroupBox放置位置没有分开,如何解决
您可以尝试在每个QGroupBox的构造函数中设置一个固定的最小高度,并在QGridLayout中设置每个QGroupBox所在的行高度为该最小高度即可。下面是一个简单的示例代码:
```cpp
#include <QtWidgets>
class MyWidget : public QWidget
{
public:
MyWidget(QWidget *parent = nullptr)
: QWidget(parent)
{
// 创建四个QGroupBox
QGroupBox *group1 = new QGroupBox("Group 1", this);
QGroupBox *group2 = new QGroupBox("Group 2", this);
QGroupBox *group3 = new QGroupBox("Group 3", this);
QGroupBox *group4 = new QGroupBox("Group 4", this);
// 设置每个QGroupBox的最小高度
int minHeight = 80;
group1->setMinimumHeight(minHeight);
group2->setMinimumHeight(minHeight);
group3->setMinimumHeight(minHeight);
group4->setMinimumHeight(minHeight);
// 创建QGridLayout并将四个QGroupBox添加到其中
QGridLayout *layout = new QGridLayout(this);
layout->addWidget(group1, 0, 0);
layout->addWidget(group2, 1, 0);
layout->addWidget(group3, 2, 0);
layout->addWidget(group4, 3, 0);
// 设置每个QGroupBox所在的行高度为最小高度
layout->setRowMinimumHeight(0, minHeight);
layout->setRowMinimumHeight(1, minHeight);
layout->setRowMinimumHeight(2, minHeight);
layout->setRowMinimumHeight(3, minHeight);
}
};
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MyWidget w;
w.show();
return a.exec();
}
```
上述代码将四个QGroupBox放置在一个QGridLayout中,每个QGroupBox的最小高度为80像素,并且QGridLayout中每个行的高度均为80像素。您可以根据需要更改这些值。
C++Qt用Qgridlayout让两个button在两个Qlistwidget中间竖向紧挨着排列
你可以使用QVBoxLayout来实现这个布局。将两个QListWidget分别添加到QVBoxLayout中,然后将两个QPushButton添加到一个QWidget中,并将该QWidget添加到QVBoxLayout中。最后将QVBoxLayout设置为窗口的布局即可。以下是一个示例代码:
```cpp
#include <QtWidgets>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QWidget widget;
QVBoxLayout *layout = new QVBoxLayout(&widget);
QListWidget *list1 = new QListWidget(&widget);
QListWidget *list2 = new QListWidget(&widget);
QPushButton *button1 = new QPushButton("Button 1");
QPushButton *button2 = new QPushButton("Button 2");
QWidget *buttonWidget = new QWidget(&widget);
QVBoxLayout *buttonLayout = new QVBoxLayout(buttonWidget);
buttonLayout->addWidget(button1);
buttonLayout->addWidget(button2);
buttonLayout->setAlignment(Qt::AlignTop);
buttonWidget->setLayout(buttonLayout);
layout->addWidget(list1);
layout->addWidget(buttonWidget);
layout->addWidget(list2);
layout->setSpacing(0);
layout->setMargin(0);
widget.setLayout(layout);
widget.show();
return app.exec();
}
```
这将创建一个窗口,其中包含两个QListWidget和两个QPushButton,两个QPushButton在两个QListWidget中间竖向紧挨着排列。
阅读全文