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页面较多时,使用单继承法则要灵活的多。。
作者:韩兆新
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。