14、Qt学习笔记--QLayout

一、简介

1、开发一个图形界面应用程序时,界面的布局和业务逻辑的设定,功能的实现一样重要。

2、开发的界面应该要有拓展性。界面设计之初要考虑到不同用户的屏幕大小、纵横比例、分辨路可能不同,界面还有缩放这类情况。

3、在 Qt 工程中,采用UI设计师模式来设计界面,并不能满足开发的全部需求,像部分界面的切换,就可能需要代码控件去实现,这个时候就需要考虑如何布局这些代码部件。而只采用setGeometry()方法定位控件的位置比较笨拙。

4、Qt 中提供了更好的方法布局控件,常用方法如下:

(1)使用水平布局类 QHBoxLayout;

(2)使用垂直布局类QVBoxLayout;

(3)使用网格布局类QGridLayout;

(4)使用表格布局类QFormLayout ;

这几种种方法可以嵌套使用

5、然而,只通过以上四种布局的组合似乎不太好用, 因此需要搭配分割器QSplitter, 在QSplitter中实现局部布局,最后再放进主布局中可以实现非常好的效果。

6、控件在布局时可以先不指定父窗口,最后交由Layout 统一指定


二、示例

1、代码

//
#include "widget.h"
#include <QApplication>
#include <QDialog>
#include <QPushButton>
#include <QLineEdit>
#include <QLayout>
#include <QLabel>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    QDialog *mainWindow = new QDialog;

    QHBoxLayout *topLayout = new QHBoxLayout;
    QLabel *lbl = new QLabel(QWidget::tr("&Input:"), mainWindow);
    QLineEdit *lineEdt = new QLineEdit(mainWindow);
//    lbl->setBuddy(lineEdt);
    topLayout->addWidget(lbl);
    topLayout->addWidget(lineEdt);

    QHBoxLayout *bomLayout = new QHBoxLayout;
    QPushButton *btn_ok = new QPushButton(QWidget::tr("OK"), mainWindow);\
    btn_ok->setDefault(true);
    QPushButton *btn_cancel = new QPushButton(QWidget::tr("Cancel"), mainWindow);
    bomLayout->addStretch();
    bomLayout->addWidget(btn_ok);
    bomLayout->addStretch();
    bomLayout->addWidget(btn_cancel);
    bomLayout->addStretch();

    QVBoxLayout *mainLayout = new QVBoxLayout;
    mainLayout->addLayout(topLayout);
    mainLayout->addLayout(bomLayout);

    mainWindow->setLayout(mainLayout);

    mainWindow->resize(300, 100);
    mainWindow->setWindowTitle(QWidget::tr("Qt Test"));
    mainWindow->show();

    return a.exec();
}
//

2、运行结果



致谢

1、Qt入门-layout布局

2、Qt布局与分割器QSplitter--朝闻道

 


猜你喜欢

转载自blog.csdn.net/qq_38880380/article/details/80701117