Qml中如何更改重用组件的字段?

时间:2018-11-02 13:08:35

标签: qt qml

我有以下代码。我需要为不同的TableViews设置不同的“模型”字段。我该怎么办?

我需要为每个TableView覆盖“模型”字段。有可能吗?

// main.qml
ApplicationWindow {
    id: window

    TabView {
         Tab {
             title: "Tab 1"
             MyTable {}
         }
         Tab {
             title: "Tab 2"
             MyTable {}
         }
     }
}

// MyTable.qml
MyTableView {
    TableView {
        TableViewColumn {
            role: "number"
            title: "Number"
        }
        model: MyModel
    }
}

下一个代码正确,但是太长了。

// main.qml
ApplicationWindow {
    id: window
    TabView {
         Tab {
             title: "Tab 1"
             TableView {
                 TableViewColumn {
                     role: "number"
                     title: "Number"
                 }
                 model: MyModel_1
             }
         }
         Tab {
             title: "Tab 2"
             TableView {
                 TableViewColumn {
                     role: "number"
                     title: "Number"
                 }
                 model: MyModel_2
             }
         }
     }
}

1 个答案:

答案 0 :(得分:0)

您可以为模型设置属性别名。首先为TableView设置一个ID,然后连接其模型。

// MyTable.qml
MyTableView {
    property alias model: tableView.model

    TableView {
        id: tableView
        TableViewColumn {
            role: "number"
            title: "Number"
        }
        // model: MyModel // redundant in most cases
                          // unless you want to have a DEFAULT model
    }
}

在每个model项目中使用MyTable,如下所示:

// main.qml
ApplicationWindow {
    id: window

    TabView {
         Tab {
             title: "Tab 1"
             MyTable { model: MyFirstModel }
         }
         Tab {
             title: "Tab 2"
             MyTable { model: MySecondModel }
         }
     }
}