gpt4 book ai didi

c++ - 我如何在 QString.arg() 中使用我的枚举?

转载 作者:搜寻专家 更新时间:2023-10-31 02:20:30 25 4
gpt4 key购买 nike

我的枚举被声明为 Q_ENUM 宏,因此它在与 qDebug() 一起使用时打印枚举字段的名称(因为我使用的是 QT 5.5)而不是它的值.我想对 QString().arg() 做同样的事情,所以我用 Q_DECLARE_METATYPE() 宏声明了相同的枚举,但它也没有用并给出以下错误。

代码:

qDebug() << QString("s = %1").arg(myClass::myEnum::ok);

错误:

error: no matching function for call to 'QString::arg(myClass::myEnum)'

我该如何解决这个问题?

最佳答案

Q_ENUM 不提供对某种字符串值的直接转换,因此您必须使用 QMetaEnum:

qDebug() << QStringLiteral("s = %1").arg(QMetaEnum::fromType<MyClass::Priority>().valueToKey(static_cast<int>(myClass::myEnum::ok));

static_cast 当然是枚举类所必需的。

关于c++ - 我如何在 QString.arg() 中使用我的枚举?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32639593/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com