在自定义项目模型中,我想调用已更改某些给定角色的数据。
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。我在这里做错了吗?
答案 0 :(得分:4)
如果您还没有,我会将您的VS2013更新为更新5.特别是,在Update 4中,他们修复了初始化列表的一些问题。另请参阅此QTBUG-39142
您的编译器似乎正在尝试使用常规构造函数构造QVector
对象。您还可以验证是否已启用C ++ 11并且已定义Q_COMPILER_INITIALIZER_LISTS
。