我正在尝试编译上面的例子,但是它没有编译(windows,Mingw 4.8)。错误是:
In file included from ..\abstractitemmodel\main.cpp:40:0: ..\abstractitemmodel\model.h:77:27: error: conflicting return type specified for 'virtual QHash<int, QByteArray> AnimalModel::roleNames() const'
QHash<int,QByteArray> roleNames() const;
^
In file included from ..\..\..\..\include\QtCore/QAbstractListModel:1:0,
from ..\abstractitemmodel\model.h:40,
from ..\abstractitemmodel\main.cpp:40:
..\..\..\..\include\QtCore/qabstractitemmodel.h:234:43: error: overriding 'virtual const QHash<int, QByteArray>& QAbstractItemModel::roleNames() const'
virtual const QHash<int,QByteArray> & roleNames() const;
显然,QAbstractListModel中的原型需要一个引用而不是一个对象。我不知道如何改变代码,所以它实际上可以工作。
如果我将一个QHash成员添加到AnimalModel,在构造函数中初始化它,然后返回对它的引用,程序崩溃。
答案 0 :(得分:1)
{4}的返回类型从Qt4中的roleNames
更改为Qt5中的const QHash<int,QByteArray> &
。
因此,您似乎正在尝试针对Qt4编译Qt5示例。