目录
思路:setSizeConstrain固定大小QWidget.hide(),QWidget.show()显示与隐藏
效果图(大力镇楼)
思路: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();
}
}