Qt 页面布局

//mydialog.h
#ifndef MYDIALOG_H
#define MYDIALOG_H

#include <QDialog>

#include <QLabel>
#include <QLineEdit>
#include <QComboBox> //下拉框
#include <QTextEdit>
#include <QGridLayout>
#include <QPushButton>
#include <QVBoxLayout>
#include <QHBoxLayout>

namespace Ui {
class MyDialog;
}

class MyDialog : public QDialog
{
    Q_OBJECT

public:
    explicit MyDialog(QWidget *parent = 0);
    ~MyDialog();

private:
    Ui::MyDialog *ui;

 private:
    //左侧
    QLabel* UserNameLabel;
    QLabel* NameLabel;
    QLabel* SexLabel;
    QLabel* DepartmentLabel;
    QLabel* AgeLabel;
    QLabel* OtherLabel;
    QLineEdit* UserNameLineEdit;
    QLineEdit* NameLineEdit;
    QComboBox* SexComboBox;
    QTextEdit* DepartmentTextEdit;
    QLineEdit* AgeLineEdit;

    QGridLayout* leftLayout;

    //右侧
    QLabel* HeadLabel;
    QLabel* HeadInconLabel;
    QPushButton* UpdateHeadBtn;
    QHBoxLayout* TopRightLayout;

    QLabel* IntroductionLabel;
    QTextEdit* IntroductionTextEdit;
    QVBoxLayout* RightLayout;

    //底部
    QPushButton* OkBtn;
    QPushButton* CancelBtn;
    QHBoxLayout* BottomLayout;
};

#endif // MYDIALOG_H




//mydialog.cpp
#include "mydialog.h"
#include "ui_mydialog.h"

MyDialog::MyDialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::MyDialog)
{
    ui->setupUi(this);

    setWindowTitle(tr("UserInfo"));

    /**********左侧**********/
    UserNameLabel=new QLabel(tr("用户名:"));
    UserNameLineEdit=new QLineEdit;
    NameLabel=new QLabel(tr("姓名:"));
    NameLineEdit=new QLineEdit;
    SexLabel=new QLabel(tr("性别:"));
    SexComboBox=new QComboBox;
    SexComboBox->addItem(tr("femail"));
    SexComboBox->addItem(tr("man"));
    DepartmentLabel=new QLabel(tr("部门:"));
    DepartmentTextEdit=new QTextEdit;
    AgeLabel=new QLabel(tr("年龄"));
    AgeLineEdit=new QLineEdit;
    OtherLabel=new QLabel(tr("备注"));
    //设置控件风格,由形状和阴影配合设定
    OtherLabel->setFrameStyle(QFrame::Panel|QFrame::Sunken);

    /*
        void addWidget
        {
        Qwidget* widget,       //需要插入的控件对象
        int fromRow,           //插入的行
        int fromColumn,        //插入的列
        int rowSpan,            //表示占用的行数
        int columnSpan,         //表示占用的列数
        Qt::Alignment alignment=0;   //描述各个控件的对齐方式
        }
    */

    /*
        void addLayout
        {
        QLayout* layout,          //需要插入的子布局对象
        int Row,                 //插入的起始行
        int Column,             //插入的起始列
        int rowSpan,            //表示占用的行数
        int columnSpan,         //表示占用的列数
        Qt::Alignment alignment=0;   //指定对齐方式
        }
    */

    leftLayout=new QGridLayout();
    leftLayout->addWidget(UserNameLabel,0,0);//用户名
    leftLayout->addWidget(UserNameLineEdit,0,1);

    leftLayout->addWidget(NameLabel,1,0); //姓名
    leftLayout->addWidget(NameLineEdit,1,1);

    leftLayout->addWidget(SexLabel,2,0); //姓别
    leftLayout->addWidget(SexComboBox,2,1);

    leftLayout->addWidget(DepartmentLabel,3,0); //部门
    leftLayout->addWidget(DepartmentTextEdit,3,1);

    leftLayout->addWidget(AgeLabel,4,0); //年龄
    leftLayout->addWidget(AgeLineEdit,4,1);


    leftLayout->addWidget(OtherLabel,5,0,1,2); //其他

    //设置第一列占用的比例1
    leftLayout->setColumnStretch(0,1);
    //设置第二列占用的比例3
    leftLayout->setColumnStretch(1,3);

    /***********右侧*************/
    HeadLabel=new QLabel(tr("头像"));
    HeadInconLabel=new QLabel;
    QPixmap icon("C://312.png");
    HeadInconLabel->setPixmap(icon);
    HeadInconLabel->resize(icon.width(),icon.height());
    UpdateHeadBtn=new QPushButton(tr("更新"));

    TopRightLayout=new QHBoxLayout();
    TopRightLayout->setSpacing(20);
    TopRightLayout->addWidget(HeadLabel);
    TopRightLayout->addWidget(HeadInconLabel);
    TopRightLayout->addWidget(UpdateHeadBtn);

    IntroductionLabel=new QLabel(tr("个人说明:")); //右下角部分
    IntroductionTextEdit=new QTextEdit;

    RightLayout=new QVBoxLayout();
    RightLayout->setMargin(10);
    RightLayout->addLayout(TopRightLayout);
    RightLayout->addWidget(IntroductionLabel);
    RightLayout->addWidget(IntroductionTextEdit);

    /******底部*******/
    OkBtn=new QPushButton("Confirm");
    CancelBtn=new QPushButton("Cancel");

    BottomLayout=new QHBoxLayout();
    //在两个按钮之前插入一个占位符,使两个按钮向右对齐
    BottomLayout->addStretch();
    BottomLayout->addWidget(OkBtn);
    BottomLayout->addWidget(CancelBtn);

    /****************/
    QGridLayout* mainLayout=new QGridLayout(this);
    //this->setLayout(mainLayout);
    mainLayout->setMargin(15);//设定对话框的边距(边缘空白大小)
    mainLayout->setSpacing(10);
    mainLayout->addLayout(leftLayout,0,0);
    mainLayout->addLayout(RightLayout,0,1);
    mainLayout->addLayout(BottomLayout,1,0,1,2);
    mainLayout->setSizeConstraint(QLayout::SetFixedSize);

}

MyDialog::~MyDialog()
{
    delete ui;
}




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值