【问题标题】:QList initialization via initializer list通过初始化列表初始化 QList
【发布时间】:2016-09-13 06:42:00
【问题描述】:

我的硬盘损坏了,我不得不重新设置所有内容。

问题是以前工作的代码现在抛出错误。

    QList<QColor> colors = {
    QColor(0, 255, 255, 255),
    QColor(0, 200, 255, 255),
    QColor(0, 170, 255, 255),
    QColor(0, 150, 255, 255),
    QColor(0, 130, 255, 255),
};

错误: D:\dev\est_tsd\tests\testgis.cpp:19: 错误: C2440: ‘initializing’: cannot convert from ‘initializer-list’ to ‘QList’ 没有构造函数可以采用源类型,或者构造函数重载决议不明确

我读到 Qt 现在支持带有 QList 的初始化列表 (套件名称:Desktop Qt 5.3 MSVC2013 OpenGL 64bit)。我错过了什么?

我们将不胜感激。

【问题讨论】:

  • DEFINES += Q_COMPILER_INITIALIZER_LISTS 可以放入 .pro 文件以修复错误,但这只是一种解决方法。
  • 您使用的是哪个版本的 Qt5?

标签: c++ qt


【解决方案1】:

您正在使用复制初始化语义而不是直接列表初始化。您应该检查您是否在 .pro 文件中:

CONFIG += c++11

然后使用:

QList<QColor> colors{
    QColor(0, 255, 255, 255),
    QColor(0, 200, 255, 255),
    QColor(0, 170, 255, 255),
    QColor(0, 150, 255, 255),
    QColor(0, 130, 255, 255)
};

【讨论】:

  • 非常感谢您的快速回答,但 CONFIG += c++11 已添加到我的专业文件中,但不知何故无法正常工作。使用这个提示同样的错误
【解决方案2】:

尝试删除最后一个逗号。 它变成:

QList<QColor> colors = {
QColor(0, 255, 255, 255),
QColor(0, 200, 255, 255),
QColor(0, 170, 255, 255),
QColor(0, 150, 255, 255),
QColor(0, 130, 255, 255)};

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-09
    • 1970-01-01
    • 1970-01-01
    • 2011-06-05
    • 1970-01-01
    • 1970-01-01
    • 2021-12-19
    • 1970-01-01
    相关资源
    最近更新 更多