如果窗口改变大小,如何自动调整按钮大小?

时间:2016-04-19 06:02:54

标签: qt

我有一个窗口和一堆按钮。这个窗口将是我的“主菜单”。放置按钮后,我希望将这些按钮固定为此窗口的大小。所以如果窗口改变了它(例如用户),它们应该填满窗口并改变它们的大小。

我该怎么做?

1 个答案:

答案 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()
{

}