这可能是下一个重复项,但是尽管如此,我仍未在此代码中找到错误:

#include <qwt_plot.h>

class QLinePlot : public QwtPlot
{
    Q_OBJECT
public:
    QLinePlot(QWidget* parent = 0, Qt::WindowFlags flags = 0): QwtPlot(parent)
    {
    }

    ~QLinePlot()
    {
    }

};


int main( int argc, char **argv )
{
    QLinePlot * plot = new QLinePlot();
}

我删除了构建文件夹,并且再次运行了qmake,但是没有任何变化。错误消息是
test.cpp:7: undefined reference to `vtable for QLinePlot'

最佳答案

您在文件末尾缺少#include "test.moc":

// test.cpp
#include <qwt_plot.h>

class QLinePlot : public QwtPlot
{
    Q_OBJECT
public:
    using QwtPlot::QwtPlot;
};


int main( int argc, char **argv )
{
    QLinePlot plot;
}

#include "test.moc"

添加包含行后,必须在项目上重新运行qmake。

但是,您的示例并非最少。重现此问题所需要做的只是:
#include <QObject>
class Foo : public QObject {
  Q_OBJECT
  ~Foo() {}
}
int main() { Foo foo; }

07-24 14:14