QT Ui生成.h

QT的很多教程上都写

uic -o hello.h hello.ui

uic -o hello.cpp -impl hello.h hello.ui

来生成cpp和h文件,但是第二步其实是出不来的,系统认不出-impl的参数。

但是第一步生成的h文件其实已经内容很全了,我们未必需要cpp文件,我们只要在稍作修改就能让这个h顺利运行。

假设:生成的h文件的文件名为:“test.h”,test.h的内容如下(注意我在代码里用红色标出的部分)

#ifndef FORM1_H
#define FORM1_H

#include <QtCore/QVariant>
#include <QtGui/QAction>
#include <QtGui/QApplication>
#include <QtGui/QButtonGroup>
#include <QtGui/QPushButton>
#include <QtGui/QWidget>

class Ui_Form
{
public:
QPushButton *pushButton;

void setupUi(QWidget *Form)
{
Form->setObjectName(QString::fromUtf8("Form"));
Form->resize(QSize(400, 300).expandedTo(Form->minimumSizeHint()));
pushButton = new QPushButton(Form);
pushButton->setObjectName(QString::fromUtf8("pushButton"));
pushButton->setGeometry(QRect(150, 190, 87, 30));
retranslateUi(Form);
QObject::connect(pushButton, SIGNAL(clicked()), Form, SLOT(close()));

QMetaObject::connectSlotsByName(Form);
} // setupUi

void retranslateUi(QWidget *Form)
{
Form->setWindowTitle(QApplication::translate("Form", "Form", 0, QApplication::UnicodeUTF8));
pushButton->setText(QApplication::translate("Form", "PushButton", 0, QApplication::UnicodeUTF8));
Q_UNUSED(Form);
} // retranslateUi

};

namespace Ui {
class Form: public Ui_Form {};
} // namespace Ui

#endif // FORM1_H
那么,我们只要在主文件(就是有main函数的那个cpp)里,添加一个类(这个类的名字可以自行修改)

class Win : publicQWidget,public Ui::Form
{
public:
Win(QWidget*parent = 0):QWidget(parent)
{setupUi(this);}
};
上面这段代码中红色的内容要与之前h文件中红色的部分相对应。

然后#include "test.h"//就是用ui生成的那个h文件,不需要修改,直接include

在main函数中,用以下方法调用就行了:

Win w;
w.show();
比如:我的main.cpp的内容就是

#include <QApplication>
#include <QWidget>
#include "button.h"

class Win : public QWidget, public Ui::Form
{
public:
Win(QWidget *parent = 0):QWidget(parent)
{setupUi(this);}
};

int main(int argc, char *argv[])
{
QApplication app(argc, argv);
Win w;
w.show();
return app.exec();
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值