为什么Q_OBJECT宏会导致问题(Qt)
Why is the Q_OBJECT macro causing issues (Qt)?
我在OSX Lion中运行QtCreator,每当我创建一个需要Q_OBJECT宏的类时,我在尝试构建应用程序时都会遇到错误。该类的代码如下,我收到的错误也是如此。有什么线索吗?
注意:我已经尝试过清洁、运行qmake和重建,但都无济于事。
#ifndef TASKLIST_H
#define TASKLIST_H
#include <QObject>
class TaskList : public QObject
{
Q_OBJECT
public:
explicit TaskList(QObject *parent = 0 );
public slots:
void addTask();
void displayTasks();
};
#endif // TASKLIST_H
错误:
:-1:错误:找不到体系结构x86_64 的符号
:-1:错误:collect2:ld返回1退出状态
Qt Creator中似乎仍然存在一个错误。
我有一个大项目,有很多类都有Q_OBJECT,还有一些类没有Q_OBJECT。它运行良好。然而,如果我将Q_OBJECT添加到其中一个没有它的类中,我在尝试构建它时会收到"collect2:ld return 1 exit status"错误。
检查构建目录,我发现这个类的moc文件丢失了。Qt只是没有为它创建moc文件!但是,如果我从项目中删除头文件和cpp文件并再次添加它们,它就可以工作,生成moc文件,并成功构建项目。
这个问题似乎只有在我有一个没有Q_OBJECT的类并且它在过去成功构建的情况下才会发生。在添加"Q_OBJECT"之前从未编译过的具有Q_OBJECT。
因此,如果这个问题发生了,并且您确信您正确地包含了所有内容(并且注释掉Q_OBJECT可以正确地构建项目),请执行以下操作:
- 从项目中删除.h和.cpp文件(您刚刚在其中添加了Q_OBJECT)
- 再次将它们添加到项目中
- 清洁项目
- 重新构建它
编辑
在某些情况下,运行qmake
(构建/运行qmake)然后运行Clean All
就足够了。
tasklist.h文件
#ifndef TASKLIST_H
#define TASKLIST_H
#include <QObject>
class TaskList : public QObject
{
Q_OBJECT
public:
explicit TaskList(QObject *parent = 0 );
public slots:
void addTask(){};
void displayTasks(){};
};
#endif // TASKLIST_H
tasklist.cpp
#include "tasklist.h"
TaskList::TaskList(QObject *parent) :
QObject(parent)
{
}
main.cpp
#include <QtCore/QCoreApplication>
#include "tasklist.h"
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
TaskList t;
return a.exec();
}
工作正常,但它应该在单独的文件
相关文章:
- 在 Qt(C++) 中使用 QProcess 解压缩 - 提取目录问题
- 关于如何使用指向主窗口的指针的 QT 问题
- 如何解决"no Qt platform plugin could be initialized"问题?
- Qt Visual Studio 2015 加载项编译问题
- Qt OpenGL 渲染到纹理性能问题
- Qt 信号/插槽问题
- 在 armhf 上使用 cmake 在 qt 上的编译问题 "Syntax error: wird unexpected (expecting " ) " "
- 在 C++ 的 Qt 中使用 WINAPI 线程时出现问题
- Android因为权限问题而杀死Qt应用程序
- Qt & Firebase C++ SDK 在 iOS 上的链接问题
- 面临在 if 语句之外打印变量数据的问题 完成使用 Qt 编程
- CMake Qt建立在Windows链接器问题之上
- 需要有关在qt c ++应用程序中使用崩溃问题的建议
- 从 Qt 中的信号调用成员函数的问题
- Qt的新信号/时隙语法问题 - 连接到一个简单的函数
- 解决枚举命名问题 - Qt
- 为什么Q_OBJECT宏会导致问题(Qt)
- 影子变量问题Qt
- 时序问题:QT写入串行端口,然后读
- 本程序的信号和插槽问题(Qt)