【问题标题】:moc_ files broken while importing a Qt project from another machine?从另一台机器导入 Qt 项目时 moc_ 文件损坏?
【发布时间】:2013-06-15 12:59:50
【问题描述】:

我下载了一个 Qt 项目,但是当我想编译它时,它在“发布”模式下出现以下错误:

moc_mainwindow.cpp:-1: 错误:未定义对“MainWindow::on_pushButton_2_clicked()”的引用 moc_adminpage.cpp:-1: 错误: 对 'AdminPage::on_pushButton_clicked()' 的未定义引用

而且根本不编译

在“调试”模式下,它会编译并且 exe 会运行,但它会给出以下警告:

QMetaObject::connectSlotsByName: on_pushButton_clicked() 没有匹配的信号 QMetaObject::connectSlotsByName:on_lineEdit_editingFinished() 没有匹配信号

并且注意到的“pushButton”在被点击时不会做任何事情!

所以我对 moc 文件知之甚少,但我从来没有真正对它们做任何事情。不过我猜他们有问题。看起来 Qt 无法将我的 on_pushButton_clicked() 函数(插槽)连接到 pushButton clicked 信号。

PS 1:“发布”部分中提到的错误发生在 moc 文件中。

PS 2:在第一行的每个 moc 文件中,都有一个 #include "../../FinalProject/mainwindow.h 这会导致以下警告

目录中没有这样的文件

应该是这样的,但我该如何解决呢?

【问题讨论】:

  • 您是否使用 qmake 作为您的构建系统?您是否还下载了 moc_* 文件?您是否尝试过删除它们并让 qmake 重新生成它们?
  • @NikosC。 :是的,我正在使用 qmake。我试着删除它们。它向我抛出另一个错误,说找不到 moc 文件。
  • 请显示您用于构建项目的命令,包括对 qmake 的调用。
  • 您是否尝试过删除构建目录中的所有“Makefile”文件?

标签: c++ qt


【解决方案1】:

错误是因为您定义了插槽on_pushButton_clicked()on_lineEdit_editingFinished() 但您没有使用它。 检查您的mainwindow.h 并从private slots: 部分删除这些插槽。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-18
    • 2021-10-17
    • 1970-01-01
    • 1970-01-01
    • 2021-11-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多