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

 

 

 

 

 

 

 

 

 

posted @   天子骄龙  阅读(2905)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
历史上的今天:
2019-09-13 qt5--自定义控件封装
点击右上角即可分享
微信分享提示

目录导航