ui文件轉換成h文件
手動轉換:
運行CMD控制台
cd到ui文件夾
uic -o u.h u.ui 會得到一個u.h文件
以上過程在構建時會自動產生
h文件的使用方法:
方法一:繼承
myclass.h文件---父控件類
#ifndef __CARCULATOR_H_ #define __CARCULATOR_H_ #include "u.h" //導入ui界面頭文件 #include <QDialog> //繼承方式 class myclass:public QDialog,public Ui::CarculatorDialog{ //Ui_CarculatorDialog 與 Ui::CarculatorDialog 一樣,這個類名看界面文件u.h //注意:必須先繼承父窗口類QDialog,再繼承ui界面類 //這個父控件類要與ui.h類中setupUI函數需要的父控件類相同 public: myclass(void); }; #endif
myclass.cpp 文件
#include "myclass.h" myclass::myclass(void){ //構造函數 setupUi(this); //調用界面類中的setupUi函數 //參數:父窗口指針 //ui.h文件產生子控件,需要給他們指定父控件 }
main.cpp文件
#include <QApplication> #include "myclass.h" int main(int argc,char *argv[]) { QApplication app(argc,argv); myclass win; win.show(); return app.exec(); }
功能代碼補全后文件
myclass.h文件
#ifndef __CARCULATOR_H_ #define __CARCULATOR_H_ #include "u.h" //導入ui界面頭文件 #include <QDialog> #include <QDoubleValidator> //繼承方式 class myclass:public QDialog,public Ui::CarculatorDialog{ //Ui_CarculatorDialog 與 Ui::CarculatorDialog 一樣 //注意:必須先繼承父窗口類QDialog,再繼承ui界面類 //這個父控件類要與ui.h類中setupUI函數需要的父控件類相同 Q_OBJECT public: myclass(void); public slots: void enableButton(void); void carculator(void); }; #endif
myclass.cpp文件
#include "myclass.h" myclass::myclass(void){ //構造函數 setupUi(this); //調用界面類中的setupUi函數 //參數:父窗口指針 //ui.h文件產生子控件,需要給他們指定父控件 connect(m_x,SIGNAL(textChanged(QString)),this,SLOT(enableButton(void))); connect(m_y,SIGNAL(textChanged(QString)),this,SLOT(enableButton(void))); connect(m_button,SIGNAL(clicked(void)),this,SLOT(carculator(void))); m_x->setValidator(new QDoubleValidator(this)); m_y->setValidator(new QDoubleValidator(this)); } void myclass::enableButton(void){ bool bxok; bool byok; m_x->text().toDouble(&bxok); m_y->text().toDouble(&byok); m_button->setEnabled(bxok && byok); } void myclass::carculator(void){ double res=m_x->text().toDouble() + m_y->text().toDouble(); QString str=QString::number(res); m_z->setText(str); }
main.cpp與上面相同
方法二:組合--創建ui界面類成員變量
myclass.h文件
#ifndef __CARCULATOR_H_ #define __CARCULATOR_H_ #include "u.h" //導入ui界面頭文件 #include <QDialog> #include <QDoubleValidator> //組合方式 class myclass:public QDialog{ Q_OBJECT public: myclass(void); ~myclass(void); //添加一個析構函數 //釋放ui指針 public slots: void enableButton(void); void carculator(void); private: Ui::CarculatorDialog* ui;//創建界面類的成員變量 //可以通過ui->訪問子控件 }; #endif
myclass.cpp 文件
#include "myclass.h" myclass::myclass(void){ //構造函數 ui=new Ui::CarculatorDialog(); //也可以通過初始化列表申請空間 ui->setupUi(this); //調用界面類中的setupUi函數 //參數:父窗口指針 //ui.h文件產生子控件,需要給他們指定父控件 connect(ui->m_x,SIGNAL(textChanged(QString)),this,SLOT(enableButton(void))); connect(ui->m_y,SIGNAL(textChanged(QString)),this,SLOT(enableButton(void))); connect(ui->m_button,SIGNAL(clicked(void)),this,SLOT(carculator(void))); ui->m_x->setValidator(new QDoubleValidator(this)); ui->m_y->setValidator(new QDoubleValidator(this)); } myclass::~myclass(void){ //析構函數 delete ui; } void myclass::enableButton(void){ bool bxok; bool byok; ui->m_x->text().toDouble(&bxok); ui->m_y->text().toDouble(&byok); ui->m_button->setEnabled(bxok && byok); } void myclass::carculator(void){ double res=ui->m_x->text().toDouble() + ui->m_y->text().toDouble(); QString str=QString::number(res); ui->m_z->setText(str); }
main.cpp 與上面相同