QML.NET-将C#类转换为QML列表模型

时间:2019-07-12 14:03:53

标签: c# qt qml

我正在研究QML.NET的TableView。我有一个C#对象类(人员:ID和名称)。我想用我的C#类(人)填充QML表视图。

有人知道如何实现这一目标吗?

1 个答案:

答案 0 :(得分:1)

您将需要使用Net.toListModel(personModel.personList)方法将List<Person>转换为QML TableView可以使用的模型。

示例

PersonPage.qml

import QtQuick 2.6
import QtQuick.Controls 2.1
import QtQuick.Controls 1.4
import Features 1.0

Page {
    Pane {
        id: detsPane
        anchors.fill: parent
        contentHeight: pane.implicitHeight

        TableView {
            id: personTable
            implicitWidth:  pane.width -20

            TableViewColumn { 
                role: "id"
                title: "Identifier"
            }
            TableViewColumn {
                role: "name"
                title: "Name"
            }

            model: personModel
        }

        PersonModel {
            id: personModel
            Component.onCompleted: {
                personTable.model = Net.toListModel(personModel.personList) 
            }
        }
    }    
}

PersonModel.cs

using System.Collections.Generic;

namespace GUI.Models
{
    public class PersonModel 
    {
        public class Person
        {
            public string Id { get; set; }
            public string Name { get; set; }
        }

        public List<Person> PersonList { get; } = new List<Person>()
        {
            new Person(){Id="BB", Name="Bob Bobber" },
            new Person(){Id="RM", Name="Rod McRod" }
        };
    }
}

这将产生以下结果: Application Screenshot

Nb。 qml页面已从项目页面添加到示例项目。 Main.qml

    Drawer {
...        
            model: ListModel {
                ListElement { title: "Contacts"; source: "pages/PersonPage.qml" }
            }
...
    }

还假设您已经在Program.cs

中注册了模型
   Qml.Net.Qml.RegisterType<PersonModel>("Features");