2

我对 QT 编程有点陌生,当我试图让程序打开一个我通过按下按钮创建的新对话框时,我遇到了这个奇怪的错误。

我正在尝试通过按下按钮打开table.uirobotdance.uigraph.uifrom 。scouting.uiscouting.cpp

table *teamtable = new table(this); teamtable->show();

我已将 .ui 的头文件包含在 .ui 中scouting.cpp,但它给了我这个错误:

侦察.obj:-1:

错误:LNK2019:未解析的外部符号“public:__thiscall graph::graph(class QWidget *)”(??0graph@@QAE@PAVQWidget@@@Z) 在函数“private:void __thiscall Scouting::on_actionGraphs_triggered(void) " (?on_actionGraphs_triggered@Scouting@@AAEXXZ)

显示了另外两个与此类似的错误。

为什么会这样?我按照这个人的教程做了他所做的,但他似乎没有遇到任何错误。

scouting.cpp:

http://pastebin.com/NEEu9jmM

table.h:

http://pastebin.com/BMDCkcwJ

table.cpp

在附加评论部分,因为我不能发布超过 2 个链接。

4

3 回答 3

3

我相信您正在 Windows 上构建您的应用程序。我怀疑 Visual Studio 项目文件未使用添加的文件进行更新,这导致了问题。只需删除 Visual Studio 构建文件夹,然后重新构建。它会正常工作。

于 2013-08-09T11:24:51.993 回答
2

通常有两个可能的原因:


A)您没有将graph.cpp(和其他.cpp文件)添加到您的.pro文件中


B)你的头文件看起来有点像这样

class graph : public QWidget
{
public:
    graph( QWidget* parent );
    ~graph();

    ...
}

但您的源文件 (.cpp) 不包含以下内容:

#include "graph.h"

graph::graph( QWidget* parent ) :
    QWidget( parent )
{
    ...
}

graph::~graph()
{
    ...
}
于 2013-01-22T09:10:44.617 回答
1

这是来自无法将所有目标文件链接在一起的链接器的错误。

  • 您的头文件和源文件添加到您的项目?
  • 如果您在 Qt 中使用任何库,您可以将它们添加到您的项目.pro文件中(例如QT += core gui webkitwidgets network:)
  • 添加您在代码中使用的所有类的库指令。(如#include <QDialog>
  • 不要忘记从项目路径中删除所有编译器生成的输出目录,注意不要删除项目的源目录,删除项目的输出目录后首先右键单击您的项目,然后单击Run qmake然后构建您的项目。
于 2013-01-23T15:46:56.123 回答