qt学习笔记可扩展对话框

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();

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值