具有初始化列表的 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
。
在自定义项目模型中,我想调用一些给定角色更改的数据。
在 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
。