这可能是下一个重复项,但是尽管如此,我仍未在此代码中找到错误:
#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; }