从 Qt4 更改为 Qt5:QtGui/QAction:生成的 ui_ 文件中没有这样的文件或目录
Changing from Qt4 to Qt5: QtGui/QAction: No such file or directory in generated ui_ file
我必须确保我的项目在 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>
^
这是一个 ui_
文件,该文件是从使用 Qt Designer 创建的表单生成的...所以我无法将我使用的定义放在普通代码中。
构建它非常困难:Build->Clean All
,擦除磁盘上的每个文件(debug
、release
、make*
、ui_*
), Build->Clean All
再次(当然没用), 运行 qmake
, 再次构建 ...
我仍然必须重复执行此操作,因为 ui_
文件似乎重新生成了有缺陷的信息。
因为我必须对 Qt4 和 Qt5 版本中的每个提交构建进行起诉,所以我现在必须经常这样做...
如何在 Qt5 中正确构建它 - 或者如何轻松清理构建的特定部分? (一个干净的构建需要几分钟......巨大的项目......)
我建议您将那些 ui_*.h 文件放在不同的位置,这样结果可能会有所不同,并且在 QT 版本之间可以唯一地编译。
NOT_QT_4 {
UI_HEADERS_DIR = foo
} else {
UI_HEADERS_DIR = bar
}
您应该执行影子构建以从源中获取所有输出文件。 Qt4 和 Qt5 之间似乎 uic.exe 发生了变化。就我而言,我获得了 Qt5.6,然后我应该在我的 .pro greaterThan(QT_MAJOR_VERSION, 4) 中写入:QT += widgets if not no ui_*.h are released。为了正确清理您的项目,我想您应该更改 makefile 的某些部分。清洁剂是做什么用的?
我必须确保我的项目在 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>
^
这是一个 ui_
文件,该文件是从使用 Qt Designer 创建的表单生成的...所以我无法将我使用的定义放在普通代码中。
构建它非常困难:Build->Clean All
,擦除磁盘上的每个文件(debug
、release
、make*
、ui_*
), Build->Clean All
再次(当然没用), 运行 qmake
, 再次构建 ...
我仍然必须重复执行此操作,因为 ui_
文件似乎重新生成了有缺陷的信息。
因为我必须对 Qt4 和 Qt5 版本中的每个提交构建进行起诉,所以我现在必须经常这样做...
如何在 Qt5 中正确构建它 - 或者如何轻松清理构建的特定部分? (一个干净的构建需要几分钟......巨大的项目......)
我建议您将那些 ui_*.h 文件放在不同的位置,这样结果可能会有所不同,并且在 QT 版本之间可以唯一地编译。
NOT_QT_4 {
UI_HEADERS_DIR = foo
} else {
UI_HEADERS_DIR = bar
}
您应该执行影子构建以从源中获取所有输出文件。 Qt4 和 Qt5 之间似乎 uic.exe 发生了变化。就我而言,我获得了 Qt5.6,然后我应该在我的 .pro greaterThan(QT_MAJOR_VERSION, 4) 中写入:QT += widgets if not no ui_*.h are released。为了正确清理您的项目,我想您应该更改 makefile 的某些部分。清洁剂是做什么用的?