您的位置:首页 > 编程语言 > Qt开发

Qt之对话框设计——可扩展对话框

2012-11-17 20:52 429 查看

利用setSizeConstraint(QLayout::SetFixedSize)方法使对话框尺寸保持相对固定(有控件决定),不能经过拖动改变大小。









extension.h

#ifndef EXTENSION_H
#define EXTENSION_H

#include <QtGui/QDialog>
#include <QWidget>

class Extension : public QDialog
{
Q_OBJECT

public:
Extension(QWidget *parent = 0, Qt::WFlags flags = 0);
~Extension();

void createBaseInfo();
void createDetaiInfo();

private:
QWidget *baseWidget;
QWidget *detaiWidget;

public slots:
void sl_Extension();

};

#endif // EXTENSION_H


extension.cpp

#include "extension.h"
#include <QVBoxLayout>
#include <QGridLayout>
#include <QLabel>
#include <QLineEdit>
#include <QComboBox>
#include <QPushButton>

Extension::Extension(QWidget *parent, Qt::WFlags flags)
: QDialog(parent, flags)
{
setWindowTitle(tr("Extension Dialog"));

createBaseInfo();
createDetaiInfo();

QVBoxLayout *mainLayout = new QVBoxLayout(this);
mainLayout->addWidget(baseWidget);
mainLayout->addWidget(detaiWidget);
mainLayout->setSpacing(10);
mainLayout->setSizeConstraint(QLayout::SetFixedSize);
}

Extension::~Extension()
{

}

void Extension::createBaseInfo()
{
baseWidget = new QWidget;

QLabel *labName = new QLabel(tr("Name:"));
QLabel *labSex = new QLabel(tr("Sex:"));
QLineEdit *edtName = new QLineEdit;
QComboBox *cbbSex = new QComboBox;
cbbSex->insertItem(0,tr("male"));
cbbSex->insertItem(1,tr("female"));
QPushButton *btnOk = new QPushButton(tr("Ok"));
QPushButton *btnDetai = new QPushButton(tr("Detai"));
connect(btnDetai,SIGNAL(clicked()),this,SLOT(sl_Extension()));

QGridLayout *baseLayout = new QGridLayout(baseWidget);
baseLayout->addWidget(labName,0,0);
baseLayout->addWidget(edtName,0,1);
baseLayout->addWidget(btnOk,0,2);
baseLayout->addWidget(labSex,1,0);
baseLayout->addWidget(cbbSex,1,1);
baseLayout->addWidget(btnDetai,1,2);
baseLayout->setMargin(10);
baseLayout->setSpacing(10);

}

void Extension::createDetaiInfo()
{
detaiWidget = new QWidget;

QLabel *labAge = new QLabel(tr("Age:"));
QLabel *labDepartment = new QLabel(tr("Department:"));
QLabel *labEmail = new QLabel(tr("Email:"));
QLineEdit *edtAge = new QLineEdit;
QComboBox *cbbDepartment = new QComboBox;
cbbDepartment->insertItem(0,tr("Department 1"));
cbbDepartment->insertItem(1,tr("Department 2"));
cbbDepartment->insertItem(2,tr("Department 3"));
QLineEdit *edtEmail = new QLineEdit;

QGridLayout *detaiLayout = new QGridLayout(detaiWidget);
detaiLayout->addWidget(labAge,0,0);
detaiLayout->addWidget(labDepartment,1,0);
detaiLayout->addWidget(labEmail,2,0);
detaiLayout->addWidget(edtAge,0,1);
detaiLayout->addWidget(cbbDepartment,1,1);
detaiLayout->addWidget(edtEmail,2,1);
detaiLayout->setMargin(10);
detaiLayout->setSpacing(10);

detaiWidget->hide();
}

void Extension::sl_Extension()
{
if (detaiWidget->isHidden())
{
detaiWidget->show();
}
else
{
detaiWidget->hide();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: