我想从我的 C++ 代码中填充 QML 中定义的 QComboBox。我已经看到了两种可能的方法:
- 从 C++ 代码中定义一个列表(
QStringList
例如),并将其公开为Q_ELEMENT
. 然后从 C++ 访问该列表,model: backend.qlist
假设列表是在backend
. 或者 - 使用 . 在 C++ 代码中查找 QComboBox
view.rootObject()->findChild()
。然后用于addItem()
填充列表。
什么是最佳实践?
我想从我的 C++ 代码中填充 QML 中定义的 QComboBox。我已经看到了两种可能的方法:
QStringList
例如),并将其公开为Q_ELEMENT
. 然后从 C++ 访问该列表,model: backend.qlist
假设列表是在backend
. 或者view.rootObject()->findChild()
。然后用于addItem()
填充列表。什么是最佳实践?
到目前为止,第一个选择!
QML 代表 Qt建模语言,遵循模型视图架构,其中模型(此处为 C++)不应该知道任何关于视图 (QML) 的信息。
第一个选项效果很好。实施很容易。从 C++ 端创建一个返回列表的方法:
QVariantList getList()
{
QVariantList list;
list << "Op1";
list << "Op2";
list << "Op3";
return list;
}
然后像这样通过 QML 调用该方法:
comboBoxReader.model = backend.getList()