>我正在尝试编译上面的例子,但它没有编译(Windows,Mingw 4.8)。错误是:
In file included from ..abstractitemmodelmain.cpp:40:0: ..abstractitemmodelmodel.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 ........includeQtCore/QAbstractListModel:1:0,
from ..abstractitemmodelmodel.h:40,
from ..abstractitemmodelmain.cpp:40:
........includeQtCore/qabstractitemmodel.h:234:43: error: overriding 'virtual const QHash<int, QByteArray>& QAbstractItemModel::roleNames() const'
virtual const QHash<int,QByteArray> & roleNames() const;
显然,QAbstractListModel 中的原型期望返回引用而不是对象。我不知道如何更改代码,以便它实际工作。
如果我将 QHash 成员添加到动物模型,在构造函数中初始化它,然后返回对它的引用,程序崩溃。
roleNames
的返回类型从 Qt4 中的 const QHash<int,QByteArray> &
更改为 Qt5 中的QHash<int,QByteArray>
。因此,看起来您正在尝试针对 Qt4 编译 Qt5 示例。