如何使用c ++向量追加列表模型

时间:2018-04-17 17:28:33

标签: c++ qt qml

我是Qt和QML的新手。

我现在正试图从c ++代码中获取一个列表并将列表应用于列表模型,以便listview可以显示更新的列表。

到目前为止,我所做的是构建listview和listmodel以及delegator,如下所示:

Rectangle {
id: container
width: 500; height: 400

function getModel()
{
    return environmentModel
}

ListModel {
     id: environmentModel

     ListElement {
         hs: 2
         tp: 2.45
         dp: 2.45
     }
     ListElement {
         hs: 1
         tp: 2.45
         dp: 2.45
     }
     ListElement {
         hs: 3
         tp: 2.45
         dp: 2.45
     }
 }

Component {
    id: environmentDelegate
    Row {
        spacing: 10
        Text { width: 100; text: hs }
        Text { width: 100; text: tp }
        Text { width: 100; text: dp }
    }
}

Component {
    id: environmentHeader
    Row {
        spacing: 10
        Text { width: 100; text: "Hs" }
        Text { width: 100; text: "Tp" }
        Text { width: 100; text: "Dp" }
    }
}
// The delegate for each location in the model:

ListView {
         anchors.fill: parent
         model: environmentModel
         delegate: environmentDelegate
         header: environmentHeader
     }
}

我想做的是

1)我有一个c ++函数,它返回一个向量,比如说

 class Record {
    int date;
    char time;
    float hs;
    float tp;
    float dp;
 };
 std::vector<Record> getRecords();

2)如果单击一个按钮,则从上面的函数getRecords()返回的列表将附加到listmodel。我研究了一点Qt和QML,信号和插槽,但仍然没有任何想法。如果有人做出榜样会很棒。

1 个答案:

答案 0 :(得分:0)

创建模型here有很好的例子。

我会创建一个c ++方法来附加到你的模型并声明它Q_INVOKABLE。您可以使用鼠标按键信号调用该方法(参见&#34;曝光方法&#34;在this page上)。