用户资料修改程序,综合运用分割窗口、堆栈窗口和布局管理类来设计主窗口

 

/*contact.h*/
#ifndef CONTACT_H
#define CONTACT_H
#include<QLabel>
#include<QGridLayout>
#include<QLineEdit>
#include<QCheckBox>
#include <QWidget>

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

 

#ifndef CONTENT_H
#define CONTENT_H
#include<QStackedWidget>
#include<QPushButton>
#include <QDialog>
#include "baseinfo.h"
#include "contact.h"
#include "detail.h"

QT_BEGIN_NAMESPACE
namespace Ui { class Content; }
QT_END_NAMESPACE

class Content : public QFrame
{
    Q_OBJECT

public:
    Content(QWidget *parent = nullptr);
    ~Content();
    QStackedWidget *stack;
    QPushButton *AmendBtn;
    QPushButton *CloseBtn;
    BaseInfo *baseInfo;
    Contact *contact;
    Detail *detail;

private:
    Ui::Content *ui;
};
#endif // CONTENT_H

 

#ifndef DETAIL_H
#define DETAIL_H
#include<QLabel>
#include<QComboBox>
#include<QLineEdit>
#include<QTextEdit>
#include<QGridLayout>

#include <QWidget>

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

 

#ifndef BASEINFO_H
#define BASEINFO_H
#include<QLabel>
#include<QLineEdit>
#include<QComboBox>
#include<QTextEdit>
#include<QGridLayout>
#include<QPushButton>

#include <QWidget>

class BaseInfo : public QWidget
{
    Q_OBJECT
public:
    explicit BaseInfo(QWidget *parent = nullptr);

signals:

public slots:
private:
    //Left
    QLabel *UserNameLabel;
    QLabel *NameLabel;
    QLabel *SexLabel;
    QLabel *DepartmentLabel;
    QLabel *AgeLabel;
    QLabel *OtherLabel;
    QLineEdit *UserNameLineEdit;
    QLineEdit *NameLineEdit;
    QComboBox *SexComboBox;
    QTextEdit *DepartmentTextEdit;
    QLineEdit *AgeLineEdit;
    QGridLayout *LeftLayout;
    //right
    QLabel *HeadLabel;
    QLabel *HeadIconLabel;
    QPushButton *UpdateHeadBtn;
    QHBoxLayout *TopRightLyout;
    QLabel *IntroductionLabel;
    QTextEdit *IntroductionTextEdit;
    QVBoxLayout *RightLayout;
};

#endif // BASEINFO_H

 

    QPixmap icon("/home/linux/QT_set/Example/312.png");

    HeadIconLabel->setPixmap(icon);
    HeadIconLabel->resize(icon.width(),icon.height());
    UpdateHeadBtn = new QPushButton(tr("Update: "));

    TopRightLyout= new QHBoxLayout();
    TopRightLyout->setSpacing(20);
    TopRightLyout->addWidget(HeadLabel);
    TopRightLyout->addWidget(HeadIconLabel);
    TopRightLyout->addWidget(UpdateHeadBtn);

    IntroductionLabel = new QLabel(tr("Personal description: "));
    IntroductionTextEdit = new QTextEdit;

    RightLayout=new QVBoxLayout();
    RightLayout->setMargin(10);
    RightLayout->addLayout(TopRightLyout);
    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);

}

 

#include "contact.h"

Contact::Contact(QWidget *parent) : QWidget(parent)
{
    EmailLabel=new QLabel(tr("电子邮件: "));
    EmailLineEdit=new QLineEdit;

    AddrLabel = new QLabel(tr("联系地址: "));
    AddrLineEdit = new QLineEdit;

    CodeLabel=new QLabel(tr("邮政编码: "));
    CodeLineEdit= new QLineEdit;

    MoviTelLabel=new QLabel(tr("移动电话: "));
    MoviTelLineEdit=new QLineEdit;
    MoviTelCheckBook=new QCheckBox(tr("接受留言: "));

    ProTelLabel=new QLabel(tr("办公电话: "));
    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);

}

 

#include "content.h"
#include "ui_content.h"

Content::Content(QWidget *parent) : QFrame(parent)
    , ui(new Ui::Content)
{
    stack=new QStackedWidget(this);
    stack->setFrameStyle(QFrame::Panel|QFrame::Raised);
    /*3个页面*/
    baseInfo = new BaseInfo();
    contact = new Contact();
    detail = new Detail();

    stack->addWidget(baseInfo);
    stack->addWidget(contact);
    stack->addWidget(detail);

    /*2个按钮*/
    AmendBtn =new QPushButton(tr("amend"));
    CloseBtn =new QPushButton(tr("close"));
    QHBoxLayout *BtnLayout =new QHBoxLayout;

    BtnLayout->addStretch(1);
    BtnLayout->addWidget(AmendBtn);
    BtnLayout->addWidget(CloseBtn);
    /*整体布局*/
    QVBoxLayout *RightLayout =new QVBoxLayout(this);

    RightLayout->setMargin(10);
    RightLayout->setSpacing(6);
    RightLayout->addWidget(stack);
    RightLayout->addLayout(BtnLayout);
}

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

#include "detail.h"

Detail::Detail(QWidget *parent) : QWidget(parent)
{
    NationalLabel=new QLabel(tr("country/address: "));
    NationalComboBox=new QComboBox;
    NationalComboBox->insertItem(0,tr("China"));
    NationalComboBox->insertItem(1,tr("USA"));
    NationalComboBox->insertItem(2,tr("Britain"));
    ProvinceLabel=new QLabel(tr("Peovinces: "));

    ProvinceComboBox=new QComboBox;
    ProvinceComboBox->insertItem(0,tr("江苏省"));
    ProvinceComboBox->insertItem(1,tr("山东省"));
    ProvinceComboBox->insertItem(2,tr("浙江省"));
    CityLabel=new QLabel(tr("city: "));

    CityLineEdit=new QLineEdit;
    IntroductLabel=new QLabel(tr("Personal elucidation: "));
    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);

}

 

#include "content.h"
#include<QTextCodec>
#include<QSplitter>
#include<QListWidget>
#include <QApplication>

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,QObject::tr("基本信息"));
    list->insertItem(1,QObject::tr("联系方式"));
    list->insertItem(2,QObject::tr("详细资料"));

    Content *content=new Content(splitterMain);

    QObject::connect(list,SIGNAL(currentRowChanged(int)),content->stack,
                     SLOT(setCurrentIndex(int)));
    splitterMain->setWindowTitle(QObject::tr("修改用户资料"));

    splitterMain->setMinimumSize(splitterMain->minimumSize());

    splitterMain->setMaximumSize(splitterMain->maximumSize());

    splitterMain->show();

    return a.exec();
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值