Qt QML检索TableView单元格中使用的spinbox的值
我有一个桌面视图。第三列“OrderedAmount”包含一个spinboxQt QML检索TableView单元格中使用的spinbox的值,qt,qml,tableview,qspinbox,Qt,Qml,Tableview,Qspinbox,我有一个桌面视图。第三列“OrderedAmount”包含一个spinbox TableView { id: lw_order x: 420 y: 63 width: 169 height: 253 model: orderModelId TableViewColumn { id: tableorderid role:
TableView {
id: lw_order
x: 420
y: 63
width: 169
height: 253
model: orderModelId
TableViewColumn
{
id: tableorderid
role: "OrderedID"
title: "ID"
width: 10
}
TableViewColumn
{
role: "OrderedItems"
title: "Items"
width: 100
}
TableViewColumn
{
id: tableamountid
role: "OrderedAmount"
title: "Amount"
width: 50
delegate: Item {
SpinBox {
id: tableamountspin
anchors.verticalCenter: parent.verticalCenter
minimumValue: 1
width: 40
}
}
}
ListModel {
id: orderModelId
}
}
如何从表的每一行检索SpinBox的实际值
我试过这个:
for (var index = 0 ; index < lw_order.rowCount; index++)
{
order = order + orderModelId.get(index).OrderedID + ";" + orderModelId.get(index).OrderedAmount + ";"
}
for(var index=0;index
不幸的是,我只得到了名为“orderedd”的第一列的值
qml:1;未定义;4.未定义代码>
非常感谢您的帮助我认为问题在于您需要将SpinBox
值设置为styleData.value
,这是OrderedAmount
元素的值
如果这样做,则可以使用以下方法在函数中获得正确的值:
orderModelId.get(index.OrderedAmount
请记住,当SpinBox
更改时,您需要更新模型。大概是这样的:
import QtQuick 2.5
import QtQuick.Window 2.2
import QtQuick.Controls 1.4
Window {
visible: true
width: 300
Button {
text: "click me"
function getValues(lw_order, orderModelId) {
for (var index = 0 ; index < lw_order.rowCount; index++)
{
print("row: " + index)
print(" OrderedID: " + orderModelId.get(index).OrderedID + "; " +
" OrderedItems: " + orderModelId.get(index).OrderedItems + "; " +
" OrderedAmount: " + orderModelId.get(index).OrderedAmount)
}
}
onClicked: {
getValues(lw_order, orderModelId)
}
}
ListModel {
id: orderModelId
ListElement {
OrderedID: "1"
OrderedItems: "10"
OrderedAmount: "15"
}
ListElement {
OrderedID: "2"
OrderedItems: "20"
OrderedAmount: "25"
}
ListElement {
OrderedID: "3"
OrderedItems: "30"
OrderedAmount: "35"
}
}
TableView {
id: lw_order
x: 0
y: 50
width: 300
height: 300
model: orderModelId
TableViewColumn
{
id: tableorderid
role: "OrderedID"
title: "ID"
width: 50
}
TableViewColumn
{
role: "OrderedItems"
title: "Items"
width: 100
}
TableViewColumn
{
id: tableamountid
role: "OrderedAmount"
title: "Amount"
width: 70
delegate: Item {
SpinBox {
id: tableamountspin
anchors.verticalCenter: parent.verticalCenter
minimumValue: 1
width: 70
value: styleData.value
onValueChanged: {
if (focus == true) {
console.log("onValueChanged - row: " + styleData.row + " column: " + styleData.column + " value: " + value)
orderModelId.setProperty(styleData.row, "OrderedAmount", value.toString())
}
}
}
}
}
}
}
orderModelId.setProperty(styleData.row,“OrderedAmount”,value.toString())
考虑到这些想法,代码可能是这样的:
import QtQuick 2.5
import QtQuick.Window 2.2
import QtQuick.Controls 1.4
Window {
visible: true
width: 300
Button {
text: "click me"
function getValues(lw_order, orderModelId) {
for (var index = 0 ; index < lw_order.rowCount; index++)
{
print("row: " + index)
print(" OrderedID: " + orderModelId.get(index).OrderedID + "; " +
" OrderedItems: " + orderModelId.get(index).OrderedItems + "; " +
" OrderedAmount: " + orderModelId.get(index).OrderedAmount)
}
}
onClicked: {
getValues(lw_order, orderModelId)
}
}
ListModel {
id: orderModelId
ListElement {
OrderedID: "1"
OrderedItems: "10"
OrderedAmount: "15"
}
ListElement {
OrderedID: "2"
OrderedItems: "20"
OrderedAmount: "25"
}
ListElement {
OrderedID: "3"
OrderedItems: "30"
OrderedAmount: "35"
}
}
TableView {
id: lw_order
x: 0
y: 50
width: 300
height: 300
model: orderModelId
TableViewColumn
{
id: tableorderid
role: "OrderedID"
title: "ID"
width: 50
}
TableViewColumn
{
role: "OrderedItems"
title: "Items"
width: 100
}
TableViewColumn
{
id: tableamountid
role: "OrderedAmount"
title: "Amount"
width: 70
delegate: Item {
SpinBox {
id: tableamountspin
anchors.verticalCenter: parent.verticalCenter
minimumValue: 1
width: 70
value: styleData.value
onValueChanged: {
if (focus == true) {
console.log("onValueChanged - row: " + styleData.row + " column: " + styleData.column + " value: " + value)
orderModelId.setProperty(styleData.row, "OrderedAmount", value.toString())
}
}
}
}
}
}
}
导入QtQuick 2.5
导入QtQuick.Window 2.2
导入QtQuick.Controls 1.4
窗口{
可见:正确
宽度:300
钮扣{
文字:“点击我”
函数getValues(lw_顺序,orderModelId){
对于(var index=0;index
很乐意提供帮助,欢迎使用Stack Overflow。如果此答案解决了您的问题,请将其标记为已接受。