• 第二十四课、布局管理器(三)------------------狄泰软件学院


    一、如何实现下面的用户界面

    1、解决方法

    (1)、绝对定位组件的坐标和大小

    (2)、嵌套QBoxLayout

    (3)、创建3x2的QGridLayout

    #ifndef WIDGET_H
    #define WIDGET_H
    
    #include <QtGui/QWidget>
    
    class Widget : public QWidget
    {
        Q_OBJECT
    public:
        Widget(QWidget *parent = 0);
        ~Widget();
    };
    
    #endif // WIDGET_H
    Widget.h
    #include "Widget.h"
    #include <QLabel>
    #include <QLineEdit>
    #include <QGridLayout>
    
    Widget::Widget(QWidget *parent)
        : QWidget(parent, Qt::WindowCloseButtonHint)
    {
        QLabel* Name  = new QLabel("Name: ");
        QLabel* Email  = new QLabel("Email: ");
        QLabel* Address  = new QLabel("Address: ");
    
        QLineEdit*  NameEdit = new QLineEdit();
        QLineEdit*  EmailEdit = new QLineEdit();
        QLineEdit*  AddressEdit = new QLineEdit();
    
        QGridLayout* layout = new QGridLayout();
    
        layout->addWidget(Name, 0, 0);
        layout->addWidget(Email, 1, 0);
        layout->addWidget(Address, 2, 0);
        layout->addWidget(NameEdit, 0, 1);
        layout->addWidget(EmailEdit, 1, 1);
        layout->addWidget(AddressEdit, 2, 1);
    
        layout->setSpacing(10);
    
        setLayout(layout);
    
    }
    
    Widget::~Widget()
    {
    
    }
    Widget.cpp
    #include <QtGui/QApplication>
    #include "Widget.h"
    
    int main(int argc, char *argv[])
    {
        QApplication a(argc, argv);
        Widget w;
        w.show();
        
        return a.exec();
    }
    main.cpp

    二、QFormLayout布局管理器

    1、以表单(Form)的方式管理界面组件

    2、表单布局中的标签和组件相互对应的关系

    3、QFormLayout的用法概要

    4、QFormLayout的样式函数

    5、表单布局支持嵌套其它布局管理器可以作为子布局被其管理

    #ifndef WIDGET_H
    #define WIDGET_H
    
    #include <QtGui/QWidget>
    
    class Widget : public QWidget
    {
        Q_OBJECT
    public:
        Widget(QWidget *parent = 0);
        ~Widget();
    };
    
    #endif // WIDGET_H
    Widget .h
    #include "Widget.h"
    #include <QLabel>
    #include <QLineEdit>
    #include <QGridLayout>
    #include <QFormLayout>
    
    Widget::Widget(QWidget *parent)
        : QWidget(parent, Qt::WindowCloseButtonHint)
    {
    
    
        QLineEdit*  NameEdit = new QLineEdit();
        QLineEdit*  EmailEdit = new QLineEdit();
        QLineEdit*  AddressEdit = new QLineEdit();
    
        QFormLayout* layout = new QFormLayout();
    
        layout->addRow("Name: ", NameEdit);
        layout->addRow("Email: ", EmailEdit);
        layout->addRow("Address: ", AddressEdit);
    
        layout->setRowWrapPolicy(QFormLayout::WrapAllRows);//设置样式
        layout->setLabelAlignment(Qt::AlignRight);
    
        layout->setSpacing(10);
    
        setLayout(layout);
    
    }
    
    Widget::~Widget()
    {
    
    }
    Widget.cpp
    #include <QtGui/QApplication>
    #include "Widget.h"
    
    int main(int argc, char *argv[])
    {
        QApplication a(argc, argv);
        Widget w;
        w.show();
        
        return a.exec();
    }
    main.cpp

    三、小结

    (1)、QFormLayout以表单的方式管理界面组件

    (2)、QFormLayout的样式设置简洁明了

    (3)、QFormLayout支持布局管理器的相互嵌套

    (4)、QFormLayout是嵌入式产品中最常用的布局方式

  • 相关阅读:
    A*算法(八数码问题)
    【第一篇:C++与opencv】图片的读取和显示
    iOS事件拦截(实现触摸任意位置隐藏指定view)
    tableview随笔
    解决UITableView中Cell重用机制导致内容出错的方法总结
    iOS 数据类型转换
    git Xcode
    ios 读取各种类型文件
    iOS学习之iOS沙盒(sandbox)机制和文件操作之NSFileManager(三)
    iOS学习之NSBundle介绍和使用
  • 原文地址:https://www.cnblogs.com/gui-lin/p/6404122.html
Copyright © 2020-2023  润新知