2

所以基本上,我正在编写一个 Qt 应用程序。它曾经工作得很好,但是自从我重新配置了一些文件名(具体来说,很久以前,我有名为 mainwindow.h 和 .cpp 的文件。我分别将它们重命名为 net.h 和 .cpp,并且最近更改了回到 mainwindow.h 和 .cpp),它失败并出现几个错误(在运行时):

Object::connect: No such slot QWidget::slotName()
Object::disconnect: No such signal QWidget::iconSizeChanged(QSize)
Object::disconnect: No such signal QWidget::toolButtonStyleChanged(Qt::ToolButtonStyle)
Object::connect: No such signal QWidget::iconSizeChanged(QSize)
Object::connect: No such signal QWidget::toolButtonStyleChanged(Qt::ToolButtonStyle)

我在班级中注册的唯一插槽是第一个插槽名称。我不确定为什么它被列为 QWidget 的成员而不是我的类(它是 QWidget 的子类)。我知道我声明它是正确的,因为我在 moc_mainwindow.cpp 文件中找到了它。是的,我的类定义中有 Q_OBJECT。

运行时还会发生另一个错误,每秒一次:

QWidget::metric: Invalid metric command
QPainter::begin: Paint device returned engine == 0, type: 143256176

就像我说的那样,所有这些过去都可以完美运行,这就是为什么除非被问到,否则我不会发布大量代码。我认为这更像是 QMake 的缓存问题。我试过删除所有moc文件,删除项目文件,清空项目文件并生成一个新的空Makefile等。有人有什么想法吗?

4

1 回答 1

3

您不应该在没有版本控制的情况下开发代码。利用您的版本控制系统清理您的工作副本,或签出到新位置并在那里重新编译。那么你就不会责怪谁知道什么了。

在没有版本控制的情况下,手动将您的项目逐个文件复制到新位置,将其提交到您选择的新版本控制存储库(本地存储库!)并在那里编译。

请注意,Qt Creator 一直默认为影子构建——即不在您的源文件夹中的构建。擦除影子构建是微不足道的:转到源文件夹上方的一个目录,然后查找一个名称很长的文件夹,从项目名称开始。擦除它,您就可以保证没有任何类型的“缓存”。

另请注意,QMake 根本没有缓存。它重新读取其输入中给出的所有文件(.pro 及其包含)并从头开始重新创建所有 Makefile。您可以运行qmake && make clean进行清理,但这不会处理来自不同配置项目的文件。唉,这样的文件无论如何都不应该干扰。

于 2012-06-25T02:34:00.277 回答