【问题标题】:QVector<int> with initializer list fails with 3 items带有初始化列表的 QVector<int> 失败,有 3 个项目
【发布时间】:2015-09-14 19:11:51
【问题描述】:

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

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。我在这里做错了吗?

【问题讨论】:

    标签: c++ qt initializer-list qabstractitemmodel


    【解决方案1】:

    如果您还没有,我会将您的 VS2013 更新到更新 5。特别是在 Update 4 中,他们修复了初始化列表的一些问题。另见QTBUG-39142

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-21
      • 1970-01-01
      • 2020-08-23
      • 2015-06-20
      • 1970-01-01
      • 2023-03-20
      • 2018-04-25
      • 1970-01-01
      相关资源
      最近更新 更多