从TableView QML中的特定列获取数据

时间:2014-07-23 09:01:28

标签: tableview qml

我在尝试选择行时尝试从特定列获取数据。

例如,当用户选择第一行时,我需要检索列的值" Image source"。非常感谢!!

main.qml

 TableView {
     onClicked: {
         console.log("value "+ column2.value )
      }        
 id:tablev

 model: mySQLmodel
 anchors.margins: 12
 anchors.fill: parent


 TableViewColumn {               
   id: column1
   role: "Title"
   title: "Title"
    width: 120
}

TableViewColumn {
   id: column2
   role: "Credit"
   title: "Credit"
   width: 120
 }

TableViewColumn {
  id: column14
  role: "Image"
  title: "Image source"
  width: 120
  }

itemDelegate: Text
{
  text: styleData.value
  elide: Text.ElideRight
 } }}}

enter image description here

3 个答案:

答案 0 :(得分:3)

假设您正在将TableView与模型一起使用。

ListModel {
   id: libraryModel
   ListElement{ title: "A title 1" ; credit: "N/A"; source: "http://someurl.com" }
   ListElement{ title: "A title 2" ; credit: "N/A"; source: "http://someurl.com" }
   ListElement{ title: "A title 3" ; credit: "N/A"; source: "http://someurl.com" }

}

TableView {
   TableViewColumn{ role: "title"  ; title: "Title" ; width: 100 }
   TableViewColumn{ role: "credit" ; title: "Credit" ; width: 200 }
   TableViewColumn{ role: "source" ; title: "Image source" ; width: 200 }
   model: libraryModel
}

因此,您可以通过这种方式将onClick事件添加到视图中:

onClicked: {
    console.log(libraryModel.get(row).source);
} 

row是由引擎

传递给onClicked的选定行时

答案 1 :(得分:0)

[解决]

我使用bellow功能并且效果很好:

QVariantMap Model::get(int idx) const {
QVariantMap map;
foreach(int k, roleNames().keys()) {
map[roleNames().value(k)] = data(index(idx, 0), k);
}
return map;
}

快乐编码:)

答案 2 :(得分:0)

您可以添加以下内容: `

TableView {
    itemDelegate: Item  {
        MouseArea {
            anchors.fill: parent
            onClicked: {
                console.log("row: " + styleData.row + " column: " + styleData.column + " value: " + styleData.value)
            }
        }
    }
}

`