Qt設計師--ui文件轉換成h文件及使用方法


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 與上面相同

 

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM