最近感觉没有那么多时间在网上写学习笔记了。还是自己在本子上手写吧。这里只贴上代码和截图记录自己的学习历程。
常用的布局管理有QVBoxLayout,QHBoxLayout,QGridLayout。
下面是综合应用:
新建Qt Gui程序,基类为Dialog
头文件:
#ifndef DIALOG_H
#define DIALOG_H
#include
#include
#include
#include
#include
#include
#include
#include
#include
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()
{
}