7_布局管理器.md
布局管理器
定位
我们必须要指定组件放在哪里,以便窗口能够按照我们需要的方式进行渲染。Qt 提供了两种组件定位机制:绝对定位和布局定位。
- 绝对定位:给出这个组件的坐标和长宽值。
- 相对定位:布局。
#include "mainwindow.h" #include <QApplication> #include <QSpinBox> #include <QSlider> #include <QHBoxLayout> int main(int argc, char *argv[]) { QApplication a(argc, argv); QWidget window; window.setWindowTitle("Enter your age"); QSpinBox *spinBox = new QSpinBox(&window); QSlider *slider = new QSlider(Qt::Horizontal, &window); spinBox->setRange(0, 130); slider->setRange(0, 130); QObject::connect(slider, &QSlider::valueChanged, spinBox, &QSpinBox::setValue); void (QSpinBox::*spinBoxSignal)(int) = &QSpinBox::valueChanged; QObject::connect(spinBox, spinBoxSignal, slider, &QSlider::setValue); spinBox->setValue(130); QHBoxLayout *layout = new QHBoxLayout; layout->addWidget(spinBox); layout->addWidget(slider); window.setLayout(layout); window.show(); return a.exec(); }
当我们使用&QSpinBox::valueChanged 取函数指针时,编译器不知道应该取哪一个函数,需要我们就显式指定一个函数。创建一个函数指针,这个函数指针参数指定为 int。
创建了一个 QHBoxLayout 对象,就是一个布局管理器。
QT提供的几种布局管理器:
- QHBoxLayout:按照水平方向从左到右布局;
- QVBoxLayout:按照竖直方向从上到下布局;
- QGridLayout:在一个网格中进行布局,类似于 HTML 的 table;
- QFormLayout:按照表格布局,每一行前面是一段文本,文本后面跟随一个组件(通常是输入框),类似 HTML 的 form;
- QStackedLayout:层叠的布局,允许我们将几个组件按照 Z 轴方向堆叠,可以形成向导那种一页一页的效果。
本文作者:nsfoxer's blog
本文链接:https://www.cnblogs.com/nsfoxer/p/16317444.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步