QT可扩展对话框的使用

本文介绍如何在QT环境下创建并使用可扩展的对话框,通过实例展示了程序运行的效果,包括点击详细按钮后的交互操作。内容涵盖QT对话框的定制与扩展,适合对QT开发感兴趣的读者。
摘要由CSDN通过智能技术生成

可扩展对话框的使用

程序

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

效果展示

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值