首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有初始化程序列表的QVector<int>失败,有3项

带有初始化程序列表的QVector<int>失败,有3项
EN

Stack Overflow用户
提问于 2015-09-14 19:11:51
回答 1查看 828关注 0票数 3

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

对于initializer-list中的两个项,它编译得很好:

代码语言:javascript
复制
emit dataChanged(index, index, QVector<int>{ Qt::CheckStateRole, Qt::DisplayRole });

但是,当我将第三项添加到列表中时,它将失败:

代码语言:javascript
复制
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和QT5.4.1。我在这里做错什么了吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-14 19:28:18

如果您还没有,我会将您的VS2013更新为更新5,特别是在更新4中,它们已经修复了初始化程序列表中的一些问题。还可以看到这个QTBUG-39142

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

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32572186

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档