Qt 5.1 - 无法编译示例abstractitemmodel:“指定冲突的返回类型”

时间:2013-10-01 20:00:51

标签: qt qt5

我正在尝试编译上面的例子,但是它没有编译(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,在构造函数中初始化它,然后返回对它的引用,程序崩溃。

1 个答案:

答案 0 :(得分:1)

{4}的返回类型从Qt4中的roleNames更改为Qt5中的const QHash<int,QByteArray> &。 因此,您似乎正在尝试针对Qt4编译Qt5示例。