对vtable的未定义引用。试图编译一个Qt项目 [英] Undefined reference to vtable. Trying to compile a Qt project
问题描述
我使用 Code :: Blocks 8.02和mingw 5.1。 6编译器。我在编译我的Qt项目时收到此错误:
C:\Documents和Settings \The
Fuzz \Desktop\GUI\App_interface.cpp | 33 | undefined
对`vtable for AddressBook'的引用
文件AddressBook.h:
#ifndef ADDRESSBOOK_H
#define ADDRESSBOOK_H
#include< QWidget>
class QLabel;
class QLineEdit;
class QTextEdit;
class AddressBook:public QWidget
{
Q_OBJECT
public:
AddressBook(QWidget * parent = 0);
private:
QLineEdit * nameLine;
QTextEdit * addressText;
};
#endif
档案AddressBook.cpp:
#include< QtGui>
#includeaddressbook.h
AddressBook :: AddressBook(QWidget * parent)
:QWidget(parent)
{
QLabel * nameLabel = new QLabel(tr(Name:));
nameLine = new QLineEdit;
QLabel * addressLabel = new QLabel(tr(Address:));
addressText = new QTextEdit;
QGridLayout * mainLayout = new QGridLayout;
mainLayout-> addWidget(nameLabel,0,0);
mainLayout-> addWidget(nameLine,0,1);
mainLayout-> addWidget(addressLabel,1,0,Qt :: AlignTop);
mainLayout-> addWidget(addressText,1,1);
setLayout(mainLayout);
setWindowTitle(tr(Simple Address Book));
}
如果您已经有.pro文件,就不会这样做 - 您会失去它!
$ b $ p
为了自动确保生成所有moc cpp文件,你可以得到qmake自动为你生成一个.pro文件而不是自己写一个。
运行
<$ p在项目目录中的$ p>
qmake -project
,qmake将扫描你的所有C ++头文件和源文件的目录生成moc cpp文件。
I'm using Code::Blocks 8.02 and the mingw 5.1.6 compiler. I'm getting this error when I compile my Qt project:
C:\Documents and Settings\The Fuzz\Desktop\GUI\App_interface.cpp|33|undefined reference to `vtable for AddressBook'
File AddressBook.h:
#ifndef ADDRESSBOOK_H
#define ADDRESSBOOK_H
#include <QWidget>
class QLabel;
class QLineEdit;
class QTextEdit;
class AddressBook : public QWidget
{
Q_OBJECT
public:
AddressBook(QWidget *parent = 0);
private:
QLineEdit *nameLine;
QTextEdit *addressText;
};
#endif
File AddressBook.cpp:
#include <QtGui>
#include "addressbook.h"
AddressBook::AddressBook(QWidget *parent)
: QWidget(parent)
{
QLabel *nameLabel = new QLabel(tr("Name:"));
nameLine = new QLineEdit;
QLabel *addressLabel = new QLabel(tr("Address:"));
addressText = new QTextEdit;
QGridLayout *mainLayout = new QGridLayout;
mainLayout->addWidget(nameLabel, 0, 0);
mainLayout->addWidget(nameLine, 0, 1);
mainLayout->addWidget(addressLabel, 1, 0, Qt::AlignTop);
mainLayout->addWidget(addressText, 1, 1);
setLayout(mainLayout);
setWindowTitle(tr("Simple Address Book"));
}
Warning: Do not do this if you already have a .pro file - you'll lose it!
In order to automatically ensure that all moc cpp files are generated, you can get qmake to automatically generate a .pro file for you instead of writing one yourself.
Run
qmake -project
in the project directory, and qmake will scan your directory for all C++ headers and source files to generate moc cpp files for.
这篇关于对vtable的未定义引用。试图编译一个Qt项目的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!