mainLayout->setSizeConstraint(QLayout::SetFixedSize);
设置窗体的大小固定,不能经过拖动改变大小
extension.h
#ifndef EXTENSION_H
#define EXTENSION_H
#include <QDialog>
#include <QLabel>
#include <QLineEdit>
#include <QPushButton>
#include <QComboBox>
#include <QGridLayout>
class Extension : public QDialog
{
Q_OBJECT
public:
Extension(QWidget *parent = 0);
~Extension();
void createBaseWidget();
void createDetailWidget();
private:
QWidget *baseWidget;
QWidget *detailWidget;
/* base */
QLabel *nameLabel;
QLabel *sexLabel;
QLineEdit *nameLineEdit;
QComboBox *sexComBox;
QPushButton *okBtn;
QPushButton *detailBtn;
/* detail */
QLabel *ageLabel;
QLineEdit *ageLineEdit;
QLabel *departmentLabel;
QComboBox *departmentComboBox;
QLabel *emailLabel;
QLineEdit *emailLineEdit;
private slots:
void slotExtension();
};
#endif // EXTENSION_H
extension.cpp
#include "extension.h"
Extension::Extension(QWidget *parent)
: QDialog(parent)
{
createBaseWidget();
createDetailWidget();
setWindowTitle(tr("可扩展对话框"));
QVBoxLayout *mainLayout = new QVBoxLayout;
mainLayout->addWidget(baseWidget);
mainLayout->addWidget(detailWidget);
mainLayout->setSizeConstraint(QLayout::SetFixedSize);
this->setLayout(mainLayout);
connect(detailBtn, SIGNAL(clicked()), this, SLOT(slotExtension()));
}
void Extension::createBaseWidget()
{
nameLabel = new QLabel(tr("姓名"));
nameLineEdit = new QLineEdit;
okBtn = new QPushButton(tr("确定"));
sexLabel = new QLabel(tr("性别"));
sexComBox = new QComboBox;
sexComBox->addItem(tr("男"));
sexComBox->addItem(tr("女"));
detailBtn = new QPushButton(tr("详细"));
QGridLayout *baseLayout = new QGridLayout;
baseLayout->addWidget(nameLabel, 0, 0);
baseLayout->addWidget(nameLineEdit, 0, 1);
baseLayout->addWidget(okBtn, 0, 2);
baseLayout->addWidget(sexLabel, 1, 0);
baseLayout->addWidget(sexComBox, 1, 1);
baseLayout->addWidget(detailBtn, 1, 2);
baseWidget = new QWidget;
baseWidget->setLayout(baseLayout);
}
void Extension::createDetailWidget()
{
ageLabel = new QLabel(tr("姓名"));
ageLineEdit = new QLineEdit;
departmentLabel = new QLabel(tr("部门"));
departmentComboBox = new QComboBox;
departmentComboBox->addItem(tr("部门1"));
departmentComboBox->addItem(tr("部门2"));
departmentComboBox->addItem(tr("部门3"));
emailLabel = new QLabel(tr("email"));
emailLineEdit = new QLineEdit;
QGridLayout *detailLayout = new QGridLayout;
detailLayout->addWidget(ageLabel, 0, 0);
detailLayout->addWidget(ageLineEdit, 0, 1);
detailLayout->addWidget(departmentLabel, 1, 0);
detailLayout->addWidget(departmentComboBox, 1, 1);
detailLayout->addWidget(emailLabel, 2, 0);
detailLayout->addWidget(emailLineEdit, 2, 1);
detailWidget = new QWidget;
detailWidget->setLayout(detailLayout);
}
void Extension::slotExtension()
{
if(detailWidget->isHidden())
detailWidget->show();
else
detailWidget->hide();
}
Extension::~Extension()
{
}
main.cpp
include “extension.h”
include
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Extension w;
w.show();
return a.exec();
}