QT可扩展对话框的使用

可扩展对话框的使用

程序

//.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();
}

效果展示

在这里插入图片描述
点击详细按钮
在这里插入图片描述

发布了31 篇原创文章 · 获赞 3 · 访问量 291

猜你喜欢

转载自blog.csdn.net/weixin_44011306/article/details/105299683