擅长:python、mysql、java
<p>您应该将枚举放在从<code>QObject</code>派生的类中。它还应该标记为<code>Q_ENUMS</code>宏。然后,您可以从类的元对象中获取枚举的<code>QMetaEnum</code>,遍历键及其值,并将每个键添加到<code>QStringList</code>中。在</p>
在C++中,它会像:</P>
<pre><code>MyClass myObj;
const QMetaObject* metaObj = myObj.metaObject();
QMetaEnum enumType = metaObj->enumerator(metaObj->indexOfEnumerator("MyEnumType"));
QStringList list;
for(int i=0; i < enumType.keyCount(); ++i)
{
QString item = QString::fromLatin1(enumType.key(i)) + " "
+ QString::number(enumType.value(i));
list.append(item);
}
</code></pre>
<p>现在可以使用<code>QQmlContext::setContextProperty</code>将字符串列表公开给QML:</p>
^{pr2}$
<p>当<code>ComboBox</code>项如下所示时,将有一个包含枚举键和值的组合框:</p>
<pre><code>ComboBox {
model: myModel
...
}
</code></pre>