15

Qt 创建者可以选择将一个小部件提升为从基本小部件派生的自定义创建的类 - 我想使用它来将小部件提升为当前项目中的类。Qt 创建者向我询问类名和头文件名,这些值直接转到*.ui文件,然后转到ui_myform.h - 问题是这个文件可能(并且通常是)在源代码树之外(在构建树中)生成) 可以在任意位置,因此直接指定提升窗口的路径将无济于事。如何让 QtCreator/uic 知道在哪里寻找正确的标题?甚至可能吗?

也许有一些 Qt 变量指定源树的位置,我可以在头文件名字段中插入?

我正在使用自编译的 QtCreator 2.0.1 + 自编译的 Qt 4.7.1。

编辑:

为什么不能只输入头文件的完整路径名?

如果我将移动源代码树,或者甚至在网络上共享它——那么每个想要编译我的项目的人都必须在 Qt 创建者或源文件中编辑这个路径——两者都是不可接受的。

4

3 回答 3

23

Designer 在促销对话框中要求您提供的头文件是自己的用于定义自定义小部件的头文件,而不是生成的ui_*.h文件。

假设您想将一个 plainQWidget提升为MyCustomWidget,您必须已经有一个MyCustomWidget.h来定义您的.pro文件MyCustomWidget中包含的类,如下所示:

HEADERS  += MyCustomWidget.h

在小部件升级对话框中,只需输入MyCustomWidget.h。它的目的是生成的 ui 头文件(无论它在哪里)可以包含的类定义。

于 2011-02-05T19:07:55.420 回答
3

我已经弄清楚了这件事-我正在向我的班级提拔,并给出了自写的标题名称,这是正确的。

问题是这个(自写的)文件不是直接在项目目录中,而是在src子目录中(所有其他源也都在),我没有使用 subdirs 模板,而只是像添加它们一样

SOURCES += src/myWidget.cpp

提升选项不需要完整路径,但它需要它出现在*.pro文件中 - 在这种情况下,从 切换myWidget.h到就可以src/myWidget.h了 - 如果我移动或共享它,它将起作用。

于 2011-02-06T14:40:31.197 回答
1

如果升级的小部件表单(.ui)和类文件(.cpp, .h)位于 Qt Creator 项目子目录中,并且 j_kubik 的解决方案无法帮助它显示错误("foo.h not found"),请尝试仅使用头文件名进行升级并提供INCLUDEPATH.pro 文件中的路径。

于 2013-06-18T12:41:14.643 回答