2016-03-07 83 views
0

我创建具有自定义委托一个TableView使用checkboes有在列checkbox ES和我取得了一些成功有以下:在TableView中

// TableViewCheckBoxColumn.qml 
import QtQuick 2.2 
import QtQuick.Controls 1.4 
import QtQuick.Controls.Styles 1.4 

TableViewColumn { 
    title: "" 
    role: "check" 
    delegate: CheckBox { 
     id: checkBox 
    } 
} 

表执行如下:

import QtQuick 2.2 
import QtQuick.Controls 1.4 
import QtQuick.Controls.Styles 1.4 

Item { 
    anchors.centerIn: parent 

    ListModel { 
     id: testModel 
     ListElement { 
      check1: true 
      check2: true 
      check3: false 
      check4: false 
      check5: false 
     } 
    } 

    TableView { 
     anchors.centerIn: parent 
     TableViewCheckBoxColumn { 
      id: checkedColumn1 
     } 

     TableViewCheckBoxColumn { 
      id: checkedColumn2 
     } 

     TableViewCheckBoxColumn { 
      id: checkedColumn3 
     } 

     TableViewCheckBoxColumn { 
      id: checkedColumn4 
     } 

     TableViewCheckBoxColumn { 
      id: checkedColumn5 
     } 
     model: testModel 
    } 
} 

这至少会创建TableView以及其中每个列中的5列和checkbox es。但是,我无法弄清楚如何将列的检查状态从我的testModel传播到TableView

+1

没有必要把标签在面前的问题,这是由系统自动因而气馁完成。 – BaCaRoZzo

+0

当然。对于那个很抱歉! – Luca

回答

0

好的,首先你需要匹配列的角色属性和模型的属性。然后,您可以使用属性styleData访问该属性的值。值”

ListModel { 
    id: testModel 

    ListElement { 
     check1: true 
     check2: true 
     check3: false 
     check4: false 
     check5: false 
    } 
} 


TableView { 
    width: 1000; height: 500 

    anchors.centerIn: parent 
    TableViewColumn { 
     role: "check1" 

     delegate: CheckBox { 
      checked: styleData.value 
     } 
    } 

    TableViewColumn { 
     role: "check2" 

     delegate: CheckBox { 
      checked: styleData.value 
     } 
    } 

    TableViewColumn { 
     role: "check3" 

     delegate: CheckBox { 
      checked: styleData.value 
     } 
    } 

    TableViewColumn { 
     role: "check4" 

     delegate: CheckBox { 
      checked: styleData.value 
     } 
    } 

    TableViewColumn { 
     role: "check5" 

     delegate: CheckBox { 
      checked: styleData.value 
     } 
    } 

    model: testModel 
} 

这是更好的:

TableView { 
    width: 1000; height: 500 

    anchors.centerIn: parent 
    TableViewColumn { 
     role: "check1" 
    } 

    TableViewColumn { 
     role: "check2" 
    } 

    TableViewColumn { 
     role: "check3" 
    } 

    TableViewColumn { 
     role: "check4" 
    } 

    TableViewColumn { 
     role: "check5" 
    } 

    model: testModel 

    itemDelegate: CheckBox { 
     checked: styleData.value 
    } 
} 
+0

我不明白这个例子。什么是'setDataInYourModel'和'styleData'?目前,我只是想初始化我的模型给出的初始视图。 – Luca

+0

好吧,我以为你有一个自定义模型。你真的想要5列吗?或者你想要一个5行的列? – Cits

+0

我将有5个复选框。我想我需要5个不同的'TableViewColumn'定义,其中'role'设置为相应的模型参数。我想知道是否有办法做到这一点,而不复制'TableViewColumn'定义? – Luca