2016-03-07 69 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