带初始化列表的QVector <int>失败,有3个项目

时间:2015-09-14 19:11:51

标签: c++ qt initializer-list qabstractitemmodel

在自定义项目模型中,我想调用已更改某些给定角色的数据。

initializer-list中包含2个项目,编译得很好:

emit dataChanged(index, index, QVector<int>{ Qt::CheckStateRole, Qt::DisplayRole });

但是,当我向列表中添加第三个项目时,它会失败:

emit dataChanged(index, index, QVector<int> { Qt::CheckStateRole, Qt::DisplayRole, Qt::DecorationRole });

error C2440: '<function-style-cast>' : cannot convert from 'initializer-list' to 'QVector<int>' 
2>          No constructor could take the source type, or constructor overload resolution was ambiguous

角色是什么似乎并不重要,任何两个都会编译而第三个不会。我使用的是MSVC2013和Qt 5.4.1。我在这里做错了吗?

1 个答案:

答案 0 :(得分:4)

如果您还没有,我会将您的VS2013更新为更新5.特别是,在Update 4中,他们修复了初始化列表的一些问题。另请参阅此QTBUG-39142

您的编译器似乎正在尝试使用常规构造函数构造QVector对象。您还可以验证是否已启用C ++ 11并且已定义Q_COMPILER_INITIALIZER_LISTS