我正在使用Qt创建一个GUI应用程序; 我尝试hello world使用Qt并且它工作得很好,但是当我创建自定义列表小部件undefined reference to vtable时,我在编译时遇到错误:
我正在使用eclipse和c ++
#ifndef QMENUFILTER_H_
#define QMENUFILTER_H_
#include <qmenu.h>
class CustomMenuFilter : QMenu
{
Q_OBJECT
public:
CustomMenuFilter () ;
~CustomMenuFilter() ;
private:
QMenu FilterMenu;
QAction *AddFilterAct ;
QAction *DeleteFilterAct ;
Q_SLOT
void contextMenuEvent(QContextMenuEvent *event);
};
#endif /* QMENUFILTER_H_ */
#include "QMenuFilter.h"
CustomMenuFilter::CustomMenuFilter():QMenu()
{
DeleteFilterAct = new QAction("DeleteFilter" , this);
AddFilterAct = new QAction("AddFilter" , this);
AddFilterAct->setText("AddFilter");
DeleteFilterAct->setText("DeleteFilter");
}
Run Code Online (Sandbox Code Playgroud)
日志文件:http://pastebin.com/raw.php? i = qZes6bkm
您还需要定义dtor,这将创建vtable
CustomMenuFilter::~CustomMenuFilter() { ... }
Run Code Online (Sandbox Code Playgroud)
虽然有一些(依赖于编译器的)规则描述了编译器何时发出vtable,但通常对您来说并不重要.重要的是,您需要定义dtor,然后编译器将处理vtable,因此如果您看到错误"未定义的vtable引用",请始终检查dtor.
| 归档时间: |
|
| 查看次数: |
2237 次 |
| 最近记录: |