Qt布局器
- 常用布局器有水平布局、垂直布局、网格布局、表格布局
- 布局原则:先局部,后整体
QHBoxLayout 水平布局
QHBoxLayout* m_pHLayout = new QHBoxLayout(this);
QPushButton* m_pBtn1 = new QPushButton("1", this);
QPushButton* m_pBtn2 = new QPushButton("2", this);
QPushButton* m_pBtn3 = new QPushButton("3", this);
m_pHLayout->addWidget(m_pBtn1);
m_pHLayout->addWidget(m_pBtn2);
m_pHLayout->addWidget(m_pBtn3);
运行效果:
QVBoxLayout 垂直布局
QVBoxLayout* m_pVLayout = new QVBoxLayout(this);
QPushButton* m_pBtn1 = new QPushButton("1", this);
QPushButton* m_pBtn2 = new QPushButton("2", this);
QPushButton* m_pBtn3 = new QPushButton("3", this);
m_pVLayout->addWidget(m_pBtn1);
m_pVLayout->addWidget(m_pBtn2);
m_pVLayout->addWidget(m_pBtn3);
运行示例:
QGridLayout 网格布局
QGridLayout* m_pGridLayout = new QGridLayout(this);
QPushButton* m_pBtn1 = new QPushButton("1", this);
QPushButton* m_pBtn2 = new QPushButton("2", this);
QPushButton* m_pBtn3 = new QPushButton("3", this);
QPushButton* m_pBtn4 = new QPushButton("4", this);
QPushButton* m_pBtn5 = new QPushButton("5", this);
m_pGridLayout->addWidget(m_pBtn1, 0, 0);
m_pGridLayout->addWidget(m_pBtn2, 0, 1);
m_pGridLayout->addWidget(m_pBtn3, 0, 2);
m_pGridLayout->addWidget(m_pBtn4, 1, 0);
m_pGridLayout->addWidget(m_pBtn5, 2, 0);
QFormLayout
主要用于组件和标签对应的布局
使用示例:
m_pFormLayout = new QFormLayout(this);
QLineEdit* m_pUserLineEdit = new QLineEdit(this);
QLineEdit* m_pPassLineEdit = new QLineEdit(this);
m_pFormLayout->addRow("username:", m_pUserLineEdit);
m_pFormLayout->addRow("password:", m_pPassLineEdit);
运行效果:
常用方法
设置对齐方式
layout->setAlignment(Qt::AlignTop);
Qt::AlignLeft //水平方向靠左。
Qt::AlignRight //水平方向靠右。
Qt::AlignHCenter //水平方向居中。
Qt::AlignTop //垂直方向靠上。
效果对比:
多个布局器结合使用
示例:
QVBoxLayout* m_pVLayout = new QVBoxLayout(this);
QFormLayout *m_pFormLayout = new QFormLayout(this);
QLineEdit* m_pUserLineEdit = new QLineEdit(this);
QLineEdit* m_pPassLineEdit = new QLineEdit(this);
m_pFormLayout->addRow("username:", m_pUserLineEdit);
m_pFormLayout->addRow("password:", m_pPassLineEdit);
QGridLayout* m_pGridLayout = new QGridLayout(this);
QPushButton* m_pBtn1 = new QPushButton("1", this);
QPushButton* m_pBtn2 = new QPushButton("2", this);
QPushButton* m_pBtn3 = new QPushButton("3", this);
QPushButton* m_pBtn4 = new QPushButton("4", this);
QPushButton* m_pBtn5 = new QPushButton("5", this);
m_pGridLayout->addWidget(m_pBtn1, 0, 0);
m_pGridLayout->addWidget(m_pBtn2, 0, 1);
m_pGridLayout->addWidget(m_pBtn3, 0, 2);
m_pGridLayout->addWidget(m_pBtn4, 1, 0);
m_pGridLayout->addWidget(m_pBtn5, 2, 0); //加入界面
QLabel* m_pLabel = new QLabel("QFormLayout:",this);
m_pVLayout->addWidget(m_pLabel);
m_pVLayout->addLayout(m_pFormLayout); //加入布局
QLabel* m_pLabel1 = new QLabel("QGridLayout:", this);
m_pVLayout->addWidget(m_pLabel1);
m_pVLayout->addLayout(m_pGridLayout);
this->setLayout(m_pVLayout);//设置当前界面使用的布局
效果: