QT实现可扩展对话框

简介:

extension.h

#ifndef EXTESION_H
#define EXTESION_H

#include <QtGui>
#include "ui_extesion.h"

class Extesion : public QDialog
{
	Q_OBJECT

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

private:
	Ui::ExtesionClass ui;

	void creatBaseInfo();
	void creatDetailInfo();
	QWidget *baseWidget;
	QWidget *detailWidget;

	private slots:
		void slotExtension();
};

#endif // EXTESION_H

extemsion.cpp

#include "extesion.h"

Extesion::Extesion(QWidget *parent, Qt::WFlags flags)
	: QDialog(parent, flags)
{
	ui.setupUi(this);
	setWindowTitle(tr("Window Extension"));

	creatBaseInfo();
    creatDetailInfo();
	
	QVBoxLayout *layout = new QVBoxLayout;
    layout->addWidget(baseWidget); 
    layout->addWidget(detailWidget);
	//注意下面这一行
	//保证对话框的尺寸相对固定始终是各控件组合的尺寸
	layout->setSizeConstraint(QLayout::SetFixedSize);

    layout->setSpacing(10);
    setLayout(layout);

}

Extesion::~Extesion()
{

}

void Extesion::creatBaseInfo(){
	baseWidget=new QWidget();

	QLabel *nameLabel=new QLabel(tr("Name"));
	QLineEdit *nameLineEdit=new QLineEdit();
	nameLineEdit->setText("12");

	QLabel *sexlabel=new QLabel(tr("Sex"));
	QComboBox *combox=new QComboBox();
	combox->addItem(tr("Male"));
	combox->addItem(tr("Female"));

	QPushButton *okButton=new QPushButton(tr("Ok"));
	QPushButton *detailButton=new QPushButton(tr("Detail"));
	connect(detailButton,SIGNAL(clicked()),this,SLOT(slotExtension()));

	QDialogButtonBox *buttonBox=new QDialogButtonBox(Qt::Vertical);
	buttonBox->addButton(okButton,QDialogButtonBox::ActionRole);
	buttonBox->addButton(detailButton,QDialogButtonBox::ActionRole);

	QGridLayout *Glayout=new QGridLayout();
	Glayout->addWidget(nameLabel,0,0);
	Glayout->addWidget(nameLineEdit,0,1);
	Glayout->addWidget(sexlabel,1,0);
	Glayout->addWidget(combox,1,1);

	QHBoxLayout *hLayout=new QHBoxLayout();
	hLayout->addLayout(Glayout);
	hLayout->addStretch();
	hLayout->addWidget(buttonBox);

	baseWidget->setLayout(hLayout);
}

void Extesion::creatDetailInfo(){
	detailWidget = new QWidget;

	QLabel *label1 = new QLabel(tr("Age:"));
	QLineEdit *ageEdit = new QLineEdit;
	ageEdit->setText("30");
	QLabel *label2 = new QLabel(tr("Department:"));
	QComboBox *deptComboBox = new QComboBox;
	deptComboBox->addItem(tr("dept 1"));
	deptComboBox->addItem(tr("dept 2"));
	deptComboBox->addItem(tr("dept 3"));
	deptComboBox->addItem(tr("dept 4"));
	QLabel *label3 = new QLabel(tr("email:"));
	QLineEdit *edit = new QLineEdit;

	QGridLayout *grid = new QGridLayout;
	grid->addWidget(label1,0,0);
	grid->addWidget(ageEdit,0,1);
	grid->addWidget(label2,1,0);
	grid->addWidget(deptComboBox,1,1);
	grid->addWidget(label3,2,0);
	grid->addWidget(edit,2,1);

	detailWidget->setLayout(grid);
	detailWidget->hide();
}

void Extesion::slotExtension(){
	if(detailWidget->isHidden()){
		detailWidget->show();
	}else{
		detailWidget->hide();
	}

}

main.cpp

#include "extesion.h"
#include <QtGui/QApplication>

int main(int argc, char *argv[])
{
	QApplication a(argc, argv);
	Extesion *w=new Extesion();
	w->show();
	return a.exec();
}

 

imageimage

目录
相关文章
|
22天前
|
测试技术 API UED
【Qt 应用开发 】初步理解 Qt窗口中的模态性应用
【Qt 应用开发 】初步理解 Qt窗口中的模态性应用
68 1
|
24天前
|
XML 缓存 C++
【Qt 控件】Qt 控件提升指南:从基础到高级应用
【Qt 控件】Qt 控件提升指南:从基础到高级应用
74 0
|
2月前
MFC应用程序对话框架构
MFC应用程序对话框架构
12 0
|
6月前
|
容器
『PyQt5-Qt Designer篇』| 08 Qt Designer中容器布局和绝对布局的使用
『PyQt5-Qt Designer篇』| 08 Qt Designer中容器布局和绝对布局的使用
31 0
|
4月前
|
数据安全/隐私保护 C++ 开发者
C++ Qt开发:标准Dialog对话框组件
Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍标准对话框`QInputDialog`、`QFileDialog `这两种对话框组件的常用方法及灵活运用。在 Qt 中,标准对话框提供了一些常见的用户交互界面,用于执行特定任务,例如获取用户输入、选择文件路径、显示消息等。这些对话框通常具有标准化的外观和行为,使得在不同的平台上能够保持一致性。在一般的开发过程中,标准对话框是开发者常用的工具之一。
50 1
C++ Qt开发:标准Dialog对话框组件
|
5月前
16 QT - 标准对话框
16 QT - 标准对话框
19 0
|
11月前
Qt之标准对话框(QColorDialog、QInputDialog、QFontDialog)
Qt之标准对话框(QColorDialog、QInputDialog、QFontDialog)
105 0
|
C++
C/C++ Qt 标准Dialog对话框组件应用
在Qt中对话框分为两种形式,一种是标准对话框,另一种则是自定义对话框,在一般开发过程中标准对话框使用是最多的了,标准对话框一般包括 QMessageBox,QInputDialog,QFileDialog 这几种,这里我将总结本人在开发过程中常用到的标准对话框的使用技巧。
299 0
C/C++ Qt 标准Dialog对话框组件应用
|
区块链 Android开发
Qt界面优化:Qt应用程序设置
Qt界面优化:Qt应用程序设置
246 1
Qt界面优化:Qt应用程序设置
PySide教程:简单的对话框应用程序
  本文将展示如何使用基本控件创建简单的对话框。主要流程是用户在QLineEdit中键入名字,点击QPushButton后会看见问候。   下面这个小程序将创建和显示对话框,小程序会在整个过程中更新,你可以将这个程序用在你需要的项目中。
1135 0

推荐镜像

更多