2016-04-19 6 views
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() 
{ 

} 
Смежные вопросы