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