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

原文地址:https://www.cnblogs.com/liming19680104/p/13660315.html