具有初始化列表的 QVector<int> 因 3 项而失败

QVector<int> with initializer list fails with 3 items

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

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。我是不是做错了什么?

如果您还没有,我会将您的 VS2013 更新到 Update 5。尤其是在 Update 4 they have fixed some issues with initializer lists. Also see this QTBUG-39142

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