2010-11-05 69 views
0

不知何故,我的qt项目中的MainWindow与我在qt设计器中创建的.ui(我使用qt creator作为我的IDE)中的.ui没有链接。实现文件确实有两个:Qt类与它的.ui文件断开连接?

#include "mainwindow.h" 
#include "ui_mainwindow.h" 

但是,如果我添加窗口小部件(例如,lineedit)到用户界面的设计,如果我试图用我在执行该小工具做任何事情,我得到一个错误(当然,自动完成不会检测到该小部件)。

任何人都可以协助吗?请让我知道,如果这不够描述。谢谢!

[编辑] 这似乎是一个问题,我从qt 4.6到qt 4.7。在Qt4.6中,为UI生成的头文件与项目放在同一个目录中。在Qt4.7中,它将它们放置在构建目录中。所以我更新了头文件,但我的程序连接到了错误的头文件。不幸的是,我似乎无法让它现在链接到正确的头文件。有任何想法吗?

+0

我还没有使用过Qt设计器,但它可能有助于改变UI文件? (可以通过IDE菜单选项,或通过命令行'qmake'工具或手动'uic'命令来实现。) – aschepler 2010-11-05 18:53:53

+0

那么头文件确实存在(并且如果我改变了某些东西并且似乎更新了做一个普通的构建),我的其他接口也没问题。尽管如此,我会尽力。 – Joseph 2010-11-05 18:59:01

+0

检查你的.pro文件中的'UI_DIR'条目...你有吗?如果是的话,它的设置是什么? – smerlin 2010-11-05 22:37:36

回答

1

假设一个默认的基于qmake的项目,当您创建一个新文件时,您可以选择是否将其添加到项目中。您可以在“项目管理”对话框中选择“添加到项目”复选框。

要确保表单由QtCreator管理,请编辑项目的.pro文件,以便通过向FORMS添加条目来查看.ui文件。

选项1::

FORMS += mainwindow.ui \ 
    newdialog.ui 

选项2:例如,如果有一种形式中,mainwindow.ui,并需要被添加的第二newdialog.ui,可以它使用任何下面的选项改变

FORMS += mainwindow.ui newdialog.ui 

选项3:

FORMS += mainwindow.ui 
FORMS += newdialog.ui 

第一个选项是由QtCreator 1.3.1使用。

只要ui文件在FORMS中注册,由qmake生成的makefiles应该足够用于当前版本Qt-4.6或Qt-4.7。

+0

我已经有我的Forms + = mainwindow.ui etc.ui.问题在于它链接到了错误的生成的ui_x.h并添加了UI_DIR = ../src/似乎已经修复了它。感谢您的意见。 – Joseph 2010-11-06 17:01:27

+1

我在帖子附近试图做的一点是,如果您要从.pro文件重新生成makefile,则无需指定UI_DIR或任何其他选项即可正常工作。生成的makefile特定于生成它们的qmake版本(及其相应的qt版本)。 – 2010-11-06 18:29:27