Qt学习——布局管理器QLayout类

最近感觉没有那么多时间在网上写学习笔记了。还是自己在本子上手写吧。这里只贴上代码和截图记录自己的学习历程。


常用的布局管理有QVBoxLayout,QHBoxLayout,QGridLayout。

下面是综合应用:


新建Qt Gui程序,基类为Dialog

头文件:

#ifndef DIALOG_H
#define DIALOG_H

#include <QtGui/QDialog>
#include <QLabel>
#include <QLineEdit>
#include <QTextEdit>
#include <QComboBox>
#include <QGridLayout>
#include <QPushButton>
#include <QHBoxLayout>
#include <QVBoxLayout>
class Dialog : public QDialog
{
    Q_OBJECT

public:
    Dialog(QWidget *parent = 0);
    ~Dialog();

private:
    //左侧的控件
    QLabel *UserLabel;
    QLabel *NameLabel;
    QLabel *SexLabel;
    QLabel *DepartLabel;
    QLabel *AgeLabel;
    QLabel *OtherLabel;
    QLineEdit *UserLineEdit;
    QLineEdit *NameLineEdit;
    QComboBox *SexComboBox;
    QTextEdit *DepartTextEdit;
    QLineEdit *AgeLineEdit;
    QGridLayout *LeftGridLayout;
    //右上角
    QLabel *HeadLabel;
    QLabel *HeadIconLabel;
    QPushButton *UpdateHeadBtn;
    QHBoxLayout *RightTopHBLayout;
    //右下角
    QLabel *IntroLabel;
    QTextEdit *IntroTextEdit;
    QVBoxLayout *RightVBLayout;
    //底部
    QPushButton *OkBtn;
    QPushButton *CancelBtn;
    QHBoxLayout *ButtomHBLayout;
};

#endif // DIALOG_H

源文件:

#include "dialog.h"

Dialog::Dialog(QWidget *parent)
    : QDialog(parent)
{
    //××××××××××××初始化×××××××××××××××
    setWindowTitle(tr("UserInfo"));
    UserLabel=new QLabel(tr("用户名:"));
    UserLineEdit=new QLineEdit;
    NameLabel=new QLabel(tr("姓名:"));
    NameLineEdit=new QLineEdit;
    SexLabel=new QLabel(tr("性别:"));
    SexComboBox=new QComboBox;
    SexComboBox->addItem(tr("男"));
    SexComboBox->addItem(tr("女"));
    DepartLabel=new QLabel(tr("部门"));
    DepartTextEdit=new QTextEdit;
    AgeLabel=new QLabel(tr("年龄"));
    AgeLineEdit=new QLineEdit;
    OtherLabel=new QLabel(tr("备注"));
    OtherLabel->setFrameStyle(QFrame::Panel|QFrame::Sunken);
    //××××××××××××添加左侧××××××××××××××
    LeftGridLayout=new QGridLayout();
    LeftGridLayout->addWidget(UserLabel,0,0);
    LeftGridLayout->addWidget(UserLineEdit,0,1);

    LeftGridLayout->addWidget(NameLabel,1,0);
    LeftGridLayout->addWidget(NameLineEdit,1,1);

    LeftGridLayout->addWidget(SexLabel,2,0);
    LeftGridLayout->addWidget(SexComboBox,2,1);

    LeftGridLayout->addWidget(DepartLabel,3,0);
    LeftGridLayout->addWidget(DepartTextEdit,3,1);

    LeftGridLayout->addWidget(AgeLabel,4,0);
    LeftGridLayout->addWidget(AgeLineEdit,4,1);

    LeftGridLayout->addWidget(OtherLabel,5,0,1,2);

    LeftGridLayout->setColumnStretch(0,1);
    LeftGridLayout->setColumnStretch(1,3);
    //×××××××××××××添加右上角×××××××××××××××
    HeadLabel=new QLabel(tr("头像:"));
    HeadIconLabel=new QLabel;
    QPixmap icon("1.bmp");
    HeadIconLabel->setPixmap(icon);
    HeadIconLabel->resize(icon.width(),icon.height());
    UpdateHeadBtn=new QPushButton(tr("更新"));

    RightTopHBLayout=new QHBoxLayout;
    RightTopHBLayout->setSpacing(20);
    RightTopHBLayout->addWidget(HeadLabel);
    RightTopHBLayout->addWidget(HeadIconLabel);
    RightTopHBLayout->addWidget(UpdateHeadBtn);
    //×××××××××××××添加右下角×××××××××××××××
    IntroLabel=new QLabel(tr("个人说明:"));
    IntroTextEdit=new QTextEdit;

    RightVBLayout=new QVBoxLayout();
    RightVBLayout->setMargin(10);
    RightVBLayout->addLayout(RightTopHBLayout);
    RightVBLayout->addWidget(IntroLabel);
    RightVBLayout->addWidget(IntroTextEdit);
    //×××××××××××××添加底部×××××××××××××××
    OkBtn=new QPushButton(tr("确定"));
    CancelBtn=new QPushButton(tr("取消"));

    ButtomHBLayout=new QHBoxLayout();
    ButtomHBLayout->addStretch();
    ButtomHBLayout->addWidget(OkBtn);
    ButtomHBLayout->addWidget(CancelBtn);
    //×××××××××××××设置主窗体×××××××××××××××
    QGridLayout *mainLayout=new QGridLayout(this);
    mainLayout->setMargin(15);
    mainLayout->setSpacing(10);
    mainLayout->addLayout(LeftGridLayout,0,0);
    mainLayout->addLayout(RightVBLayout,0,1);
    mainLayout->addLayout(ButtomHBLayout,1,0,1,2);
    mainLayout->setSizeConstraint(QLayout::SetFixedSize);

    connect(OkBtn,SIGNAL(clicked()),this,SLOT(accept()));
    connect(CancelBtn,SIGNAL(clicked()),this,SLOT(reject()));
}

Dialog::~Dialog()
{

}


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值