baseinfo.h
#ifndef BASEINFO_H
#define BASEINFO_H
#include <QWidget>
#include <QLabel>
#include <QLineEdit>
#include <QComboBox>
#include <QTextEdit>
#include <QGridLayout>
#include <QPushButton>
#include <QHBoxLayout>
#include <QVBoxLayout>
class BaseInfo : public QWidget
{
Q_OBJECT
public:
explicit BaseInfo(QWidget *parent = nullptr);
signals:
public slots:
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 *HeadIconLabel;
QPushButton *UpdateHeadBtn;
QHBoxLayout *TopRightLayout;
QLabel *IntroductionLabel;
QTextEdit *IntroductionTextEdit;
QVBoxLayout *RightLayout;
};
#endif // BASEINFO_H
contact.h
#ifndef CONTACT_H
#define CONTACT_H
#include <QWidget>
#include <QLabel>
#include <QGridLayout>
#include <QLineEdit>
#include <QCheckBox>
class Contact : public QWidget
{
Q_OBJECT
public:
explicit Contact(QWidget *parent = nullptr);
signals:
public slots:
private:
QLabel *EmailLabel;
QLineEdit *EmailLineEdit;
QLabel *AddrLabel;
QLineEdit *AddrLineEdit;
QLabel *CodeLabel;
QLineEdit *CodeLineEdit;
QLabel *MoviTelLabel;
QLineEdit *MoviTelLineEdit;
QCheckBox *MoviTelCheckBook;
QLabel *ProTelLabel;
QLineEdit *ProTelLineEdit;
QGridLayout *mainLayout;
};
#endif // CONTACT_H
content.h
#ifndef CONTENT_H
#define CONTENT_H
#include <QDialog>
#include <QFrame>
#include <QPushButton>
#include <QStackedWidget>
#include "baseinfo.h"
#include "contact.h"
#include "detail.h"
class Content : public QFrame
{
Q_OBJECT
public:
Content(QWidget *parent = nullptr);
~Content();
QStackedWidget *stack;
QPushButton *AmenBtn;
QPushButton *CloseBtn;
BaseInfo *baseInfo;
Contact *contact;
Detail *detail;
};
#endif // CONTENT_H
detail.h
#ifndef DETAIL_H
#define DETAIL_H
#include <QWidget>
#include <QLabel>
#include <QComboBox>
#include <QLineEdit>
#include <QTextEdit>
#include <QGridLayout>
class Detail : public QWidget
{
Q_OBJECT
public:
explicit Detail(QWidget *parent = nullptr);
signals:
public slots:
private:
QLabel *NationalLabel;
QComboBox *NationalComboBox;
QLabel *ProvinceLabel;
QComboBox *ProvinceComboBox;
QLabel *CityLabel;
QLineEdit *CityLineEdit;
QLabel *IntroductLabel;
QTextEdit *IntroductTextEdit;
QGridLayout *mainLayout;
};
#endif // DETAIL_H
baseinfo.cpp
#include "baseinfo.h"
BaseInfo::BaseInfo(QWidget *parent) : QWidget(parent)
{
/******* 左侧 ******/
UserNameLabel = new QLabel("用户名: ");
UserNameLineEdit = new QLineEdit();
NameLabel = new QLabel("姓名: ");
NameLineEdit = new QLineEdit();
SexLabel = new QLabel("性别: ");
SexComboBox = new QComboBox();
SexComboBox->addItem("女");
SexComboBox->addItem("男");
DepartmentLabel = new QLabel("部门: ");
DepartmentTextEdit = new QTextEdit();
AgeLabel = new QLabel("年龄: ");
AgeLineEdit = new QLineEdit();
OtherLabel = new QLabel("备注: ");
OtherLabel->setFrameStyle(QFrame::Panel | QFrame::Sunken);
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);
LeftLayout->setColumnStretch(0, 1);
LeftLayout->setColumnStretch(1, 3);
/*******右侧******/
HeadLabel = new QLabel("头像: ");
HeadIconLabel = new QLabel();
QPixmap icon("123.png");
HeadIconLabel->setPixmap(icon);
HeadIconLabel->resize(icon.width(), icon.height());
UpdateHeadBtn = new QPushButton("更新");
TopRightLayout = new QHBoxLayout();
TopRightLayout->setSpacing(20);
TopRightLayout->addWidget(HeadLabel);
TopRightLayout->addWidget(HeadIconLabel);
TopRightLayout->addWidget(UpdateHeadBtn);
IntroductionLabel = new QLabel("个人说明: ");
IntroductionTextEdit = new QTextEdit();
RightLayout = new QVBoxLayout();
RightLayout->setMargin(10);
RightLayout->addLayout(TopRightLayout);
RightLayout->addWidget(IntroductionLabel);
RightLayout->addWidget(IntroductionTextEdit);
QGridLayout *mainLayout = new QGridLayout(this);
mainLayout->setMargin(15);
mainLayout->setSpacing(10);
mainLayout->addLayout(LeftLayout, 0, 0);
mainLayout->addLayout(RightLayout, 0, 1);
mainLayout->setSizeConstraint(QLayout::SetFixedSize);
}
contact.cpp
#include "contact.h"
Contact::Contact(QWidget *parent) : QWidget(parent)
{
EmailLabel = new QLabel("电子邮件: ");
EmailLineEdit = new QLineEdit();
AddrLabel = new QLabel("联系地址: ");
AddrLineEdit = new QLineEdit();
CodeLabel = new QLabel("邮政编码: ");
CodeLineEdit = new QLineEdit();
MoviTelLabel = new QLabel("移动电话: ");
MoviTelLineEdit = new QLineEdit();
ProTelLabel = new QLabel("办公电话: ");
ProTelLineEdit = new QLineEdit();
mainLayout = new QGridLayout(this);
mainLayout->setMargin(15);
mainLayout->setSpacing(10);
mainLayout->addWidget(EmailLabel, 0, 0);
mainLayout->addWidget(EmailLineEdit, 0, 1);
mainLayout->addWidget(AddrLabel, 1, 0);
mainLayout->addWidget(AddrLineEdit, 1, 1);
mainLayout->addWidget(CodeLabel, 2, 0);
mainLayout->addWidget(CodeLineEdit, 2, 1);
mainLayout->addWidget(MoviTelLabel, 3, 0);
mainLayout->addWidget(MoviTelLineEdit, 3, 1);
mainLayout->addWidget(MoviTelCheckBook, 3, 2);
mainLayout->addWidget(ProTelLabel, 4, 0);
mainLayout->addWidget(ProTelLineEdit, 4, 1);
mainLayout->setSizeConstraint(QLayout::SetFixedSize);
}
content.cpp
#include "content.h"
Content::Content(QWidget *parent)
: QFrame(parent)
{
stack = new QStackedWidget(this);
stack->setFrameStyle(QFrame::Panel | QFrame::Raised);
baseInfo = new BaseInfo();
contact = new Contact();
detail = new Detail();
stack->addWidget(baseInfo);
stack->addWidget(contact);
stack->addWidget(detail);
AmenBtn = new QPushButton("修改");
CloseBtn = new QPushButton("关闭");
QHBoxLayout *BtnLayout = new QHBoxLayout();
BtnLayout->addStretch(1);
BtnLayout->addWidget(AmenBtn);
BtnLayout->addWidget(CloseBtn);
QVBoxLayout *RightLayout = new QVBoxLayout(this);
RightLayout->setMargin(10);
RightLayout->setSpacing(6);
RightLayout->addWidget(stack);
RightLayout->addLayout(BtnLayout);
}
Content::~Content()
{
}
detail.cpp
#include "detail.h"
Detail::Detail(QWidget *parent) : QWidget(parent)
{
NationalLabel = new QLabel("国家/地址: ");
NationalComboBox = new QComboBox();
NationalComboBox->insertItem(0, "中国");
NationalComboBox->insertItem(1, "美国");
NationalComboBox->insertItem(2, "英国");
ProvinceLabel = new QLabel("省份: ");
ProvinceComboBox = new QComboBox();
ProvinceComboBox->insertItem(0, "河南省");
ProvinceComboBox->insertItem(1, "海南省");
ProvinceComboBox->insertItem(2, "河北省");
CityLabel = new QLabel("城市: ");
CityLineEdit = new QLineEdit();
IntroductLabel = new QLabel("个人说明: ");
IntroductTextEdit = new QTextEdit();
mainLayout = new QGridLayout(this);
mainLayout->setMargin(15);
mainLayout->setSpacing(10);
mainLayout->addWidget(NationalLabel, 0, 0);
mainLayout->addWidget(NationalComboBox, 0, 1);
mainLayout->addWidget(ProvinceLabel, 1, 0);
mainLayout->addWidget(ProvinceComboBox, 1, 1);
mainLayout->addWidget(CityLabel, 2, 0);
mainLayout->addWidget(CityLineEdit, 2, 1);
mainLayout->addWidget(IntroductLabel, 3, 0);
mainLayout->addWidget(IntroductTextEdit, 3, 1);
}
main.cpp
#include "content.h"
#include <QApplication>
#include <QTextEdit>
#include <QSplitter>
#include <QListWidget>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QFont font("AR PL KaitiM GB", 12);
a.setFont(font);
QSplitter *splitterMain = new QSplitter(Qt::Horizontal, 0);
splitterMain->setOpaqueResize(true);
QListWidget *list = new QListWidget(splitterMain);
list->insertItem(0, "基本信息");
list->insertItem(1, "联系方式");
list->insertItem(2, "详细资料");
Content *content = new Content(splitterMain);
QObject::connect(list, SIGNAL(currentRowChanged(int)), content->stack, SLOT(setCurrentIndex(int)));
splitterMain->setWindowTitle("修改用户资料");
splitterMain->setMinimumSize(splitterMain->minimumSize());
splitterMain->setMaximumSize(splitterMain->maximumSize());
splitterMain->show();
return a.exec();
}