代码之家  ›  专栏  ›  技术社区  ›  Megidd

访问组合框数据模型

  •  0
  • Megidd  · 技术社区  · 6 年前

    我要发一封信 QJsonArray

    netlib.h

    void discoveryResultChanged(const QJsonArray jsonArray);
    

    netlib.cpp

    QByteArray answer_ba = reply->readAll();
    QJsonDocument answer_json_doc = QJsonDocument::fromJson(answer_ba);
    QJsonObject answer_json_obj = answer_json_doc.object();
    QJsonArray answer_json_array = answer_json_obj["printers_array"].toArray();
    qDebug() << __func__ << "JSON array: " << answer_json_array;
    emit discoveryResultChanged(answer_json_array);
    

    *.qml

        ColumnLayout {
            id: printersColumn
            width: parent.width
            spacing: 8
            Layout.bottomMargin: 8
            Layout.topMargin: 8
    
            visible: !netlib.discoveryInProgress
    
            RowLayout {
                width: parent.width
    
                ComboBox {
                    id: printers
                    width: parent.width
                    anchors.margins: 4
                    textRole: "name"
                }
    
                Connections {
                    target: netlib
                    onDiscoveryResultChanged: {
                        printers.model = jsonArray // ComboBox model is set to QJsonArray
                    }
                }
            }
    
            RowLayout {
                TextArea {
                    text: printers.currentText
                    // How to access `printers` ComboBox data model here?
                    // I need to access key/values of QJsonArray ... how?
                }
            }
    
        }
    

    样本 QJsonArray

    QJsonArray([{“ip”:“10.10.2.22”,“名称”:“N0”,“端口”:4000,“配置文件数组”:[{“配置文件”:“0 blah blah blah”,“id”:0,“名称”:“配置文件0-0”},{“配置文件1 blah blah blah”,“id”:1,“名称”:“配置文件0-1”},{“配置文件2 blah blah blah”,“id”:2,“名称”:“配置文件0-2”},{“ip”:“192.168.1.1”,“名称”:“n1,“名称”:“配置文件1-0”},{“配置文件”:“1布拉布拉布拉布拉”,“id”:1,“名称”:“配置文件1-1”},{“配置文件”:“2布拉布拉布拉布拉布拉布拉布拉布拉”,“id”:2,“名称”:“配置文件1-2”}]},{“ip”:“172.16.1.1”,“名称”:“n2”,“端口”:4003,“配置文件数组”:[{“配置文件0布拉布拉布拉布拉布拉布拉布拉布拉布拉”,“id”:0,“名称”:“配置文件2-0},{“配置文件1布拉布拉布拉布拉布拉布拉”,“id”:1”,“名称”:“配置文件2布拉布拉布拉布拉布拉布拉布拉”{,“id”:2,“名称”:“概要文件2-2”}]}])


    如何访问组合框模型的键/值 QJsonArray 从内部 TextArea 在我的QML代码上?

    1 回复  |  直到 6 年前
        1
  •  0
  •   Megidd    6 年前

    这样,我就可以访问 JsonArray 模型键/值 ComboBox 带身份证 printers TextArea

     TextArea {
         text: "Printer IP: " + printers.model[printers.currentIndex].ip +
             "\nPrinter Port: " + printers.model[printers.currentIndex].port
     }