从Qt4更改为Qt5:QtGui / QAction:生成的ui_文件中没有此类文件或目录

时间:2015-09-16 14:58:12

标签: qt qt5 qmake build-error

我必须确保我的项目在Qt 4(我安装了4.7)和Qt 5(我有5.5)中构建。

为此,在我的许多地方,在pro文件中:

NOT_QT_4 {
     QT += widgets
} else {
    #Nothing specific
}

并在代码中:

#ifdef NOT_QT_4
    #include <QtWidgets>
#else
    #include <QtGui>
#endif

然而,每当我将构建从Qt 4切换到Qt 5时,我都会收到错误:

ui_somefile.h:14: error: QtGui/QAction: No such file or directory
 #include <QtGui/QAction>
                         ^

这是在使用Qt Designer创建的表单生成的ui_文件中...所以我不能把我在常规代码中使用的定义。

要构建它是非常困难的:Build->Clean All,擦除磁盘上的每个文件(debugreleasemake*ui_*) ,Build->Clean All再次(当然没用),运行qmake,再次构建...
我仍然必须重复这样做,因为ui_文件似乎会因缺陷信息而重新生成。

由于我必须在Qt4和Qt5版本中提出每个提交版本,我现在必须做很多事情......

如何在Qt5中正确构建它 - 或者我如何轻松地清理构建的特定部分? (干净的构建需要几分钟......巨型项目......)

2 个答案:

答案 0 :(得分:0)

我建议您将这些ui _ * .h文件放在不同的位置,以便结果可能不同,并在QT版本之间进行唯一编译。

for ( $row = 8; $row >= 0; $row-- ) {
    echo substr( 
       str_repeat( " - ", $row ) . str_repeat( " + ", max( 15 - ($row*2), 0 ) ) . str_repeat( " - ", $row ), 
    0, 45 );
}

答案 1 :(得分:0)

您应该进行阴影构建以从源中获取所有输出文件。似乎uc.exe在Qt4和Qt5之间发生了变化。就我而言,我得到Qt5.6然后我应该写我的.pro greaterThan(QT_MAJOR_VERSION,4):QT + =小部件,如果不是没有ui _ * .h被释放。为了正确清理你的项目,我猜你应该改变你的makefile的某些部分。什么清洁剂用于?