Qt中ui文件的使用

时间:2021-03-11 10:01:27

直接使用

#include "ui_hellodialog.h" 
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QDialog w;
Ui::HelloDialog ui;//创建ui
ui.setupUi(&w);//加载ui
w.show();//显示
return a.exec();
}

定义新类,在新类中定义一个Ui::HelloDialog的子对象,使用子对象加载该界面。也叫单继承方法

    #ifndef MYWIDGET_H 
#define MYWIDGET_H
#include <QWidget>
namespace Ui {
class MyWidget;
} //前置声明
class MyWidget : public QWidget//单继成QWidget
{
Q_OBJECT
public:
explicit MyWidget(QWidget *parent = 0);
~MyWidget();
private:
Ui::MyWidget *ui; //定义子对象
};
#endif // MYWIDGET_H
    #include "mywidget.h" 
#include "ui_mywidget.h"
#include <QDialog>
MyWidget::MyWidget(QWidget *parent) :
QWidget(parent),
ui(new Ui::MyWidget)//创建ui
{
ui->setupUi(this);//加载ui
QDialog *dialog = new QDialog(this);
dialog->setModal(true);
dialog->show();
}
MyWidget::~MyWidget()
{
delete ui;
}
    #include <QApplication> 
#include "mywidget.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MyWidget w;
w.show();//显示
return a.exec();
}

派生新类,继承Ui::HelloDialog类,也叫多重继承方法

    #ifndef HELLODIALOG_H 
#define HELLODIALOG_H
#include <QDialog>
#include "ui_hellodialog.h"
//不用Ui::Hellodialog 来定义子对象,因此不再需要前置声明了
//namespace Ui {
// class HelloDialog;
//}
class HelloDialog : public QDialog, public Ui::HelloDialog //继承了ui,多继承
{
Q_OBJECT
public:
explicit HelloDialog(QWidget *parent = 0);

signals:

public slots:
};
#endif // HELLODIALOG_H
    #include "hellodialog.h"  
#include "ui_hellodialog.h"
HelloDialog::HelloDialog(QWidget *parent) :
QDialog(parent),
Ui::HelloDialog()
{
setupUi(this);//加载ui
}
#include <QApplication> 
#include "hellodialog.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
HelloDialog w;
w.show(); //显示
return a.exec();
}