Qt 带有信号和插槽的未定义引用链接器错误
使用Qt Creator,我在Qt中创建了一个具有自定义插槽的类:Qt 带有信号和插槽的未定义引用链接器错误,qt,signals,signals-slots,slot,moc,Qt,Signals,Signals Slots,Slot,Moc,使用Qt Creator,我在Qt中创建了一个具有自定义插槽的类: class CustomEdit : public QTextEdit { Q_OBJECT public: CustomEdit(QWidget* parent); public slots: void onTextChanged (); }; 但是,我收到以下链接器错误: undefined reference to 'vtable for CustomEdit' 文件说: 如果您在“und
class CustomEdit : public QTextEdit
{
Q_OBJECT
public:
CustomEdit(QWidget* parent);
public slots:
void onTextChanged ();
};
但是,我收到以下链接器错误:
undefined reference to 'vtable for CustomEdit'
文件说:
如果您在“undefined reference to vtable for LcdNumber”一行中遇到编译器错误,您可能忘记了运行moc或在link命令中包含moc输出
。。。但这意味着什么并不明显
我是否需要将某些内容添加到我的类或.pro文件中
编辑——这是我的.pro文件:
QT += network \
script \
webkit \
xml
TARGET = MyApp
TEMPLATE = app
SOURCES += main.cpp \
MainWindow.cpp \
CustomEdit.cpp
HEADERS += MainWindow.h \
CustomEdit.h
FORMS += mainwindow.ui
QT+=网络\
剧本\
网络工具包\
xml
TARGET=MyApp
模板=应用程序
SOURCES+=main.cpp\
MainWindow.cpp\
CustomEdit.cpp
标题+=MainWindow.h\
自定义编辑.h
FORMS+=mainwindow.ui
编辑:
处理相同的问题,但答案没有明确说明如何在Qt Creator中解决此问题。是否需要将moc生成的.cpp文件显式添加到要链接的文件列表中?这似乎很痛苦。Qt creator是一个用于创建Qt项目的IDE。这就是全部。但是qmake允许您构建项目。从 qmake自动生成Makefile,因此创建每个Makefile只需要几行信息。qmake根据项目文件中的信息生成Makefile。qmake包含支持Qt开发的其他功能,自动包括moc和uic的构建规则。 您不必单独包含moc文件,但必须运行qmake,其中包含有关所需moc文件的所有信息。在qmake之后查看生成的
Makefile.debug
或Makefile.release
,您可以找到将为您提供的所有moc文件
现在要在Qt creator中运行qmake,只需转到运行qmake的Build->RebuildAll
,所有(moc)文件也将生成并链接(在Makefile.debug中)
希望这将删除您未定义的引用。您是否尝试在SO中搜索?;-)谢谢,但我没有运行qmake,我使用Qt creator只是为了获取信息,我把一些.h错误地放在源代码中而不是头文件中,这会产生同样的错误。确实如此,谢谢。我还意识到,当我在QtCreator中创建一个新类时,我必须指定“继承QWidget”作为类型信息。考虑到我已经告诉IDE我的类派生自一个Qt类,我不得不显式地指定它似乎有些奇怪,但这确实起到了作用。