Qt开发——可隐藏的对话框

目录

效果图(大力镇楼)

思路:setSizeConstrain固定大小QWidget.hide(),QWidget.show()显示与隐藏

extensiondlg.h

extensiondlg.cpp

手册节选


效果图(大力镇楼)

思路:setSizeConstrain固定大小QWidget.hide(),QWidget.show()显示与隐藏

extensiondlg.h

#ifndef DIALOG_H
#define DIALOG_H

#include <QDialog>
#include <QLabel>
#include <QVBoxLayout>
#include <QComboBox>
#include <QPushButton>
#include <QHBoxLayout>
#include <QDialogButtonBox>
#include <QLineEdit>

class ExtensionDlg : public QDialog
{
    Q_OBJECT

public:
    ExtensionDlg(QWidget *parent = nullptr);
    ~ExtensionDlg();

private:
    void creatBaseInfo();//实现基本对话框窗体部分
    void creatDetailInfo();//实现拓展窗体部分
    QWidget *baseWidget;//基本对话框窗体部分
    QWidget *detailWidget;//拓展窗体部分

private slots:
    void showDetailInfo();//进行窗体切换

};

#endif // DIALOG_H

extensiondlg.cpp

#include "extensiondlg.h"

ExtensionDlg::ExtensionDlg(QWidget *parent)
    : QDialog(parent)
{
    setWindowTitle(QStringLiteral("可拓展对话框"));
    setWindowIcon(QIcon("icon.png"));
    creatBaseInfo();//基本对话框窗体部分
    creatDetailInfo();//拓展对话框窗体部分
    //布局设计
    QVBoxLayout *layout=new QVBoxLayout(this);
    layout->addWidget(baseWidget);
    layout->addWidget(detailWidget);
    layout->setSizeConstraint(QLayout::SetFixedSize);;//设置窗体大小固定,不可用拖拽改变大小
    layout->setSpacing(10);
}

ExtensionDlg::~ExtensionDlg()
{

}

//基本对话框窗体部分
void ExtensionDlg::creatBaseInfo(){
    baseWidget = new QWidget;
    
    QLabel *headIcon = new QLabel;
    QPixmap icon("dali.png");
    headIcon->setPixmap(icon);
    headIcon->resize(icon.width(),icon.height());
    QLabel *headLabel = new QLabel;
    headLabel->setText(QStringLiteral("头像"));
    
    QLabel *nameLabel = new QLabel(QStringLiteral("姓名:"));
    QLineEdit *nameLineEdit = new QLineEdit;
    nameLineEdit->setText(QStringLiteral("诸葛大力"));
    QLabel *sexLabel = new QLabel(QStringLiteral("性别:"));
    QComboBox *sexComboBox = new QComboBox;
    sexComboBox->insertItem(0,QStringLiteral("女"));
    sexComboBox->insertItem(1,QStringLiteral("男"));
    //布局设计
    QGridLayout *LeftLayout = new QGridLayout;
    LeftLayout->addWidget(nameLabel,0,0);
    LeftLayout->addWidget(nameLineEdit,0,1);
    LeftLayout->addWidget(sexLabel,2,0);
    LeftLayout->addWidget(sexComboBox,2,1);
    LeftLayout->addWidget(headLabel,1,0);
    LeftLayout->addWidget(headIcon,1,1);

    QPushButton *OkBtn = new QPushButton(QStringLiteral("确定"));
    QPushButton *DetailBtn = new QPushButton(QStringLiteral("详细"));
    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::creatDetailInfo(){
    detailWidget = new QWidget;
    QLabel *ageLabel = new QLabel(QStringLiteral("年龄"));
    QLineEdit *ageLineEdit = new QLineEdit;
    ageLineEdit->setText(QStringLiteral("21"));
    QLabel *emailLabel = new QLabel(QStringLiteral("email:"));
    QLineEdit *emailLineEdit =new QLineEdit;
    emailLineEdit->setText(QStringLiteral("[email protected]"));
    //布局设计
    QGridLayout *mainLayout = new QGridLayout(detailWidget);
    mainLayout->addWidget(ageLabel,0,0);
    mainLayout->addWidget(ageLineEdit,0,1);
    mainLayout->addWidget(emailLabel,1,0);
    mainLayout->addWidget(emailLineEdit,1,1);

    detailWidget->hide();//先将窗体进行隐藏

}

//进行窗体切换
void ExtensionDlg::showDetailInfo(){

    if(detailWidget->isHidden()){
        detailWidget->show();
    }else {
        detailWidget->hide();
    }


}

手册节选

发布了233 篇原创文章 · 获赞 206 · 访问量 9万+

猜你喜欢

转载自blog.csdn.net/qq_41895747/article/details/104061979