我有一个窗口和一堆按钮。这个窗口将是我的“主菜单”。放置按钮后,我希望将这些按钮固定为此窗口的大小。所以如果窗口改变了它(例如用户),它们应该填满窗口并改变它们的大小。
我该怎么做?
答案 0 :(得分:2)
您应该使用布局。根据文件,
Qt布局系统提供了一种简单而有效的方法 自动安排窗口小部件中的子窗口小部件以确保这一点 他们充分利用了可用的空间。
示例:
<强>的main.cpp 强>
#include "widget.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
w.show();
return a.exec();
}
<强> widget.h 强>
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = 0);
~Widget();
private:
};
<强> widget.cpp 强>
#include "widget.h"
#include <QPushButton>
#include <QHBoxLayout>
Widget::Widget(QWidget *parent) :
QWidget(parent)
{
QPushButton *button1 = new QPushButton("One");
QPushButton *button2 = new QPushButton("Two");
//Horizontal layout with two buttons
QHBoxLayout *hblayout = new QHBoxLayout;
hblayout->addWidget(button1);
hblayout->addWidget(button2);
QPushButton *button3 = new QPushButton("Three");
QPushButton *button4 = new QPushButton("Four");
//Vertical layout with two buttons
QVBoxLayout *vblayout = new QVBoxLayout;
vblayout->addWidget(button3);
vblayout->addWidget(button4);
//We add our two layouts (horizontal & vertical) to the
//following vertical layout.
QVBoxLayout *mainLayout = new QVBoxLayout;
mainLayout->addLayout(hblayout);
mainLayout->addLayout(vblayout);
this->setLayout(mainLayout);
}
Widget::~Widget()
{
}