布局,Layout,就是把各个控件放在合适的位置,占据适当大小的空间。
在Qt中,使用布局器QLayout进行布局;
两个常用的QLayout子类:QHBoxLayout: 横向布局;QVBoxLayout: 纵向布局;在纵向布局中,每个Box的宽度信息被忽略,只关心它的高度。
目标:生成如下格式的布局,利用QVBoxLayout;
具体代码:
//mywin.h
#ifndef MYWIN_H
#define MYWIN_H
#include <QWidget>
#include "ui_mywin.h"
#include <QVBoxLayout>
#include<QLineEdit>
#include<QTextEdit>
#include<QPushButton>
class Mywin : public QWidget
{
Q_OBJECT
public:
Mywin(QWidget *parent = 0);
~Mywin();
private:
QLineEdit* m_lineEdit;
QTextEdit* m_textEdit;
QVBoxLayout* layout;
QPushButton* m_pushButton;
};
#endif // MYWIN_H
//mywin.cpp
#include "Mywin.h"
Mywin::Mywin(QWidget *parent)
: QWidget(parent)
{
//创建控件对象
m_lineEdit=new QLineEdit(this);
m_textEdit=new QTextEdit(this);
m_pushButton=new QPushButton("yes");
//创建布局
layout=new QVBoxLayout(this);
layout->addWidget(m_lineEdit);
layout->addWidget(m_textEdit);
layout->addWidget(m_pushButton);
this->setLayout(layout);//使用布局器
}
Mywin::~Mywin()
{
}
//main.cpp
#include "myclass.h"
#include <QtGui/QApplication>
#include "Mywin.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Mywin w(NULL);
w.resize(400,600);//设置窗口的高和宽度
w.move(100,100);//设置窗口的位置
w.show();//显示窗口
return a.exec();
}
点击生成解决方案,再ctrl F5运行