程序
//.h
#ifndef EXTENSIONDLG_H
#define EXTENSIONDLG_H
#include <QDialog>
class ExtensionDlg : public QDialog
{
Q_OBJECT
public:
ExtensionDlg(QWidget *parent = 0);
~ExtensionDlg();
private slots:
void showDetailInfo();
private:
void createBaseInfo();
void createDetailInfo();
QWidget *baseWidget;
QWidget *detailWidget;
};
#endif // EXTENSIONDLG_H
//.cpp
#include "extensiondlg.h"
#include <QVBoxLayout>
#include <QLabel>
#include <QLineEdit>
#include <QComboBox>
#include <QPushButton>
#include <QDialogButtonBox>
#include <QHBoxLayout>
ExtensionDlg::ExtensionDlg(QWidget *parent)
: QDialog(parent)
{
setWindowTitle("Extension Dialog");
createBaseInfo();
createDetailInfo();
QVBoxLayout *layout=new QVBoxLayout(this);
layout->addWidget(baseWidget);
layout->addWidget(detailWidget);
layout->setSizeConstraint(QLayout::SetFixedSize);//设置窗体的大小固定
layout->setSpacing(10);
}
ExtensionDlg::~ExtensionDlg()
{
}
void ExtensionDlg::showDetailInfo()//显示详细窗体
{
if(detailWidget->isHidden())
detailWidget->show();
else
detailWidget->hide();
}
void ExtensionDlg::createBaseInfo()//基本窗体
{
baseWidget=new QWidget;
QLabel *nameLabel=new QLabel("姓名:");
QLineEdit *nameLineEdit =new QLineEdit;
QLabel *sexLabel =new QLabel("性别:");
QComboBox*sexComboBox=new QComboBox;
sexComboBox->insertItem(0,"女");
sexComboBox->insertItem(1,"男");
QGridLayout*LeftLayout=new QGridLayout;
LeftLayout->addWidget(nameLabel,0,0);
LeftLayout->addWidget(nameLineEdit,0,1);
LeftLayout->addWidget(sexLabel);
LeftLayout->addWidget(sexComboBox);
QPushButton *OKBtn=new QPushButton("确定");
QPushButton *DetailBtn=new QPushButton("详细");
QDialogButtonBox *btnBox=new QDialogButtonBox(Qt::Vertical);//垂直按键排列
btnBox->addButton(OKBtn,QDialogButtonBox::ActionRole);
btnBox->addButton(DetailBtn,QDialogButtonBox::ActionRole);
QHBoxLayout *mainLayout =new QHBoxLayout(baseWidget);
mainLayout->addLayout(LeftLayout);
mainLayout->addWidget(btnBox);
connect(DetailBtn,SIGNAL(clicked()),this,SLOT(showDetailInfo()));
}
void ExtensionDlg::createDetailInfo()//详细窗体
{
detailWidget=new QWidget;
QLabel *ageLabel=new QLabel("年龄:");
QLineEdit *ageLineEdit=new QLineEdit;
ageLineEdit->setText("30");
QLabel *departmentLabel=new QLabel("部门");
QComboBox *departmentComboBox=new QComboBox;
departmentComboBox->addItem("部门1");
departmentComboBox->addItem("部门2");
departmentComboBox->addItem("部门3");
departmentComboBox->addItem("部门4");
QLabel *emailLabel=new QLabel("email:");
QLineEdit *emailLineEdit =new QLineEdit;
QGridLayout *mainLayout=new QGridLayout(detailWidget);
mainLayout->addWidget(ageLabel,0,0);
mainLayout->addWidget(ageLineEdit,0,1);
mainLayout->addWidget(departmentLabel,1,0);
mainLayout->addWidget(departmentComboBox,1,1);
mainLayout->addWidget(emailLabel,2,0);
mainLayout->addWidget(emailLineEdit,2,1);
detailWidget->hide();
}
效果展示
点击详细按钮