使用初始化列表的QVector<int>在有3个项目时失败

3
在自定义项模型中,我想使用一些给定的角色调用数据更改。
initializer-list中有两个项目,它可以很好地编译:
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个回答

4
如果您还没有更新到VS2013的Update 5,请先进行更新。特别是在 Update 4 中,已经修复了一些初始化列表问题。此外,参见这个QTBUG-39142

看起来您的编译器正在尝试使用普通构造函数来构建一个QVector对象。您也可以验证C++11是否启用,并且定义了Q_COMPILER_INITIALIZER_LISTS


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接