(二)QT学习笔记之窗口布局
窗口的布局
// 创建控件对象
m_lineEdit = new QLineEdit(this);
m_textEdit = new QPlainTextEdit(this);
// 创建布局器
QVBoxLayout* layout = new QVBoxLayout(this);
layout->addWidget(m_lineEdit); // 将第一个box添加到布局器
layout->addWidget(m_textEdit); // 将第二个box添加到布局器
// 使用布局器
this->setLayout(layout);
QSizePolicy布局参数
- Size Policy
在QSizePolicy类中定义了七种策略
Fixed : 使用sizeHint,不能更大、不能更小
Minimum: 不得小于sizeHint,可以更大,但不需要更大
Maximum: 不得大于sizeHint,可以更小
Preferred: 优先使用sizeHint,可大可小
Expanding: 使用sizeHint,越大越好
MinimumExpanding: 不得小于sizeHint,越大越好
Ignored: 忽略sizeHint,越大越好 - 相关的函数
// 获取当前policy
QSizePolicy QWidget::sizePolicy () const
// 设置新的policy
void setSizePolicy ( QSizePolicy )
void setSizePolicy ( QSizePolicy::Policy horizontal,QSizePolicy::Policy vertical )
//空间大小
virtual QSize sizeHint () const;
stretch factor: 拉伸因子
maximum size / minimum size: 上限与下限
其中,QSizePolicy::Maximum: 它是一种策略,以size
hint为最大值。maximum size: 是一个属性成员变量,在策略
之外附加一重硬性限制。
可视化布局的代码生成过程
- 界面布局‐> 保存为*.ui (QtDesigner)
*.ui是一个xml文件,里面保存了界面的信息 - .ui ‐> ui_.h
由编译程序uic将*.ui转换成一个头文件,每个控
件object都有一个变量名
(uic: ui comipler 或converter) - 启动C++的常规编译步骤
注意观察ui_*.h的内容