-1

我想从我的 C++ 代码中填充 QML 中定义的 QComboBox。我已经看到了两种可能的方法:

  1. 从 C++ 代码中定义一个列表(QStringList例如),并将其公开为Q_ELEMENT. 然后从 C++ 访问该列表,model: backend.qlist假设列表是在backend. 或者
  2. 使用 . 在 C++ 代码中查找 QComboBox view.rootObject()->findChild()。然后用于addItem()填充列表。

什么是最佳实践?

4

2 回答 2

2

到目前为止,第一个选择!

QML 代表 Qt建模语言,遵循模型视图架构,其中模型(此处为 C++)不应该知道任何关于视图 (QML) 的信息。

于 2020-11-27T15:12:22.780 回答
1

第一个选项效果很好。实施很容易。从 C++ 端创建一个返回列表的方法:

QVariantList getList()
{
    QVariantList list;
    
    list << "Op1";
    list << "Op2";
    list << "Op3";
           
    return list;
}

然后像这样通过 QML 调用该方法:

comboBoxReader.model = backend.getList()
于 2020-11-27T16:46:53.290 回答