首先是创建一个QT项目,选择QT Gui应用。然后一直下一步。
创建完成后项目结构如下
这个时候点运行,出现一个空的mainwindow界面,这里就不截图了。
下面说一下如何调用一个新的UI界面。
首先在窗体目录树中的Alice上右键,出现如下界面
选择QT设计师界面类,默认名称是dialog此时QT Creator 会自动在项目文件夹下生成dialog.h、 dialog.cpp、dialog.ui 这3个文件
接下来我们试着在main.cpp中调用dialog界面
代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | #include "mainwindow.h" #include <QApplication> #include "dialog.h" //添加代码 int main(int argc, char *argv[]) { QApplication a(argc, argv); MainWindow w; w.show(); Dialog *d = new Dialog;//添加代码 d->show();//添加代码 return a.exec(); } |
只加了3行代码,其余的是自动生成的。点击运行,出现错误如下:
main.obj : error LNK2019: 无法解析的外部符号 “public: __thiscall Dialog::Dialog(class QWidget *)”
LNK2019错误,基本断定是函数未定义,弄了半天,最后把#include “dialog.h” 改成 #include “dialog.cpp” 后此处不再报错,但出现了新的错误:
fatal error C1083: 无法打开包括文件:“ui_dialog.h”: No such file or directory
ui_dialog.h文件是IDE自动生成的,这里我们执行一次qmake后即可生成。
事实上,之后发现 #include “dialog.h” 改成 #include “dialog.cpp”是不需要的,出现LNK2019错误的最终原因是缺少了ui_dialog.h文件,此时qmake一次后,bug解决,qmake方法如下图:
总结:此bug可以说是一波三折,相对与一些IDE来说,各有各的编译方式,不是直接Run就能解决了,就QT Creater来说,遇到问题之前先qmake一次,说不定问题就解决了。
希望本文对遇到类似bug的朋友能够有所帮助。
BeiTown
2013.01.26
困扰了两天的BUG,找了无数的解决方法就是找不到错在哪,原来是IDE的问题= = 悲剧