zoukankan      html  css  js  c++  java
  • 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();
    }
    

    image-20210204163101907

    ​ 当我们使用&QSpinBox::valueChanged 取函数指针时,编译器不知道应该取哪一个函数,需要我们就显式指定一个函数。创建一个函数指针,这个函数指针参数指定为 int。

    ​ 创建了一个 QHBoxLayout 对象,就是一个布局管理器。

    QT提供的几种布局管理器:

    • QHBoxLayout:按照水平方向从左到右布局;
    • QVBoxLayout:按照竖直方向从上到下布局;
    • QGridLayout:在一个网格中进行布局,类似于 HTML 的 table;
    • QFormLayout:按照表格布局,每一行前面是一段文本,文本后面跟随一个组件(通常是输入框),类似 HTML 的 form;
    • QStackedLayout:层叠的布局,允许我们将几个组件按照 Z 轴方向堆叠,可以形成向导那种一页一页的效果。
  • 相关阅读:
    深入了解Java ClassLoader、Bytecode 、ASM、cglib (I)
    如何在ant里import
    敏捷练习(1)评估我的生活方向盘
    你是一个合格的孩子吗?
    [转] C# 路径(目录)
    XML学习记录
    js学习总结不断更新(1)
    LINQ TO XML练习
    做技术,切不可沉湎于技术
    js学习总结持续更新(2)
  • 原文地址:https://www.cnblogs.com/nsfoxer/p/14364581.html
Copyright © 2011-2022 走看看