gpt4 book ai didi

c++ - 您可以使用 Qt foreach 循环遍历每个可能的枚举值吗?

转载 作者:可可西里 更新时间:2023-11-01 15:50:15 25 4
gpt4 key购买 nike

给定一个枚举:

enum AnEnum { Foo, Bar, Bash, Baz };

您可以使用 Qt 的 foreach 循环遍历每个枚举吗?

此代码无法编译(不是我期望的...)

foreach(AnEnum enum, AnEnum)
{
// do nothing
}

最佳答案

如果它被移动到 QMetaEnum 中,那么你可以像这样迭代它:

QMetaEnum e = ...;
for (int i = 0; i < e.keyCount(); i++)
{
const char* s = e.key(i); // enum name as string
int v = e.value(i); // enum index
...
}

http://qt-project.org/doc/qt-4.8/qmetaenum.html

使用作为 QMetaEnum 的 QNetworkReply 的示例:

QNetworkReply::NetworkError error;
error = fetchStuff();
if (error != QNetworkReply::NoError) {
QString errorValue;
QMetaObject meta = QNetworkReply::staticMetaObject;
for (int i=0; i < meta.enumeratorCount(); ++i) {
QMetaEnum m = meta.enumerator(i);
if (m.name() == QLatin1String("NetworkError")) {
errorValue = QLatin1String(m.valueToKey(error));
break;
}
}
QMessageBox box(QMessageBox::Information, "Failed to fetch",
"Fetching stuff failed with error '%1`").arg(errorValue),
QMessageBox::Ok);
box.exec();
return 1;
}

关于c++ - 您可以使用 Qt foreach 循环遍历每个可能的枚举值吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10423675/

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