Fork me on GitHub

Qt之ui在程序中的使用——(2)多继承法

thirdDialog.h

#ifndef THIRDDIALOG_H
#define THIRDDIALOG_H

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

class thirdDialog:public QDialog,private Ui::Third
{
	Q_OBJECT
public:
	thirdDialog(QWidget *parent=0);
	~thirdDialog();
};

#endif

thirdDialog.cpp

#include "thirdDialog.h"

thirdDialog::thirdDialog(QWidget *parent)
{
	setupUi(this);
}

thirdDialog::~thirdDialog()
{

}

maindialog.h

#ifndef MAINDIALOG_H
#define MAINDIALOG_H

#include <QtGui>
#include "ui_first.h"
#include "ui_second.h"
#include "thirdDialog.h"


class MainDialog : public QDialog
{
	Q_OBJECT

public:
	MainDialog(QWidget *parent = 0, Qt::WFlags flags = 0);
	~MainDialog();
private:
	Ui::First firstUi;
	Ui::Second secondUi;

	private slots:
		void on_btnChild_clicked();
	
};

#endif // MAINDIALOG_H

maindialog.cpp

#include "maindialog.h"

MainDialog::MainDialog(QWidget *parent, Qt::WFlags flags)
	: QDialog(parent, flags)
{
	QTabWidget *tabWidget = new QTabWidget(this);

	QDialog *w1 = new QDialog;
	firstUi.setupUi(w1);
	QWidget *w2 = new QWidget;
	secondUi.setupUi(w2);

	tabWidget->addTab(w1,tr("First Tab"));
	tabWidget->addTab(w2,tr("Second Tab"));
	tabWidget->resize(300,300);

	connect(firstUi.btnClose,SIGNAL(clicked()),this,SLOT(close()));
	connect(secondUi.btnChild,SIGNAL(clicked()),this,SLOT(on_btnChild_clicked()));
}

MainDialog::~MainDialog()
{

}

void MainDialog::on_btnChild_clicked()
{
	thirdDialog *dlg = new thirdDialog;
	dlg->exec();
}

分析:彩虹

多继承方式可直接对ui界面上的控件或函数进行操作,代码编写更简洁;

而是用单继承方式,在操作ui页面上的控件时需加上ui对象前缀,编写代码较为麻烦。

但,对于程序中所需ui页面较多时,使用单继承法则要灵活的多。。


posted @ 2012-11-13 09:56  韩兆新  阅读(4594)  评论(0编辑  收藏  举报