QT调用多个UI窗口的方法及error LNK2019修复

首先是创建一个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

本文链接:QT调用多个UI窗口的方法及error LNK2019修复

转载声明:BeiTown原创,转载请注明来源:BeiTown's Coder 编码之源,谢谢


Tags: , , , , ,

One Response to QT调用多个UI窗口的方法及error LNK2019修复

  1. Mmmmmmmuffin 说道:

    困扰了两天的BUG,找了无数的解决方法就是找不到错在哪,原来是IDE的问题= = 悲剧

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>