ui在linux服务器上无法编译,Qt工程在Linux下编译时出现.ui文件编译不通过的问题...

所谓的Qt工程在Linux下编译时出现.ui文件编译不通过的问题,实质上就是

如何在

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 #include #include #include #include #include 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 : public QWidget, 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 #include #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();

}

参考自:http://www.qtcn.org/bbs/read.php?tid=6979并整理

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值