<int> 具有初始值设定项列表的 QVector 失败,并显示 3 个项目

QVector<int> with initializer list fails with 3 items

本文关键字:失败 QVector 显示 项目 列表 gt int lt      更新时间:2023-10-16

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

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到更新5。特别是,在更新4中,他们修复了初始化列表的一些问题。另见此QTBUG-39142

看起来你的编译器正在尝试使用正常的构造函数构造一个QVector对象。您还可以验证您已经启用了c++ 11并且定义了Q_COMPILER_INITIALIZER_LISTS