gpt4 book ai didi

qt - 如何在 TableView (QML) 中选择一行?

转载 作者:行者123 更新时间:2023-12-02 16:20:06 24 4
gpt4 key购买 nike

在 Qt 6 中,所有 QtQuick 1 组件都被删除了。我想使用 Qt 6 重写一个旧应用程序。该应用程序使用 TableView 控件版本 1。

如何在新控件 TableView 中选择一行并获取该行中所有单元格的值?

最佳答案

我遇到了同样的问题。这是对我有用的。

我使用 Qt 5.12 和来自 QtQuick 2.12TableView

我在获取点击行的索引时遇到了麻烦。我发现 DelegateChooserDelegateChoice 组件允许您访问 TableView 中的行和列属性。在你得到 rowcolumn 表单 DelegateChoice 之后,你可以使用它来访问模型中的数据,方法是 QAbstractItemModel index(...)data(...) 喜欢:

var idx = model.index(row, column)
var data = model.data(idx)

这是完整的例子:

    import QtQuick 2.12             // TableView
import Qt.labs.qmlmodels 1.0 // DelegateChooser

// ...

TableView {
id: usersTable
model: tableModel

anchors.fill: parent

delegate: DelegateChooser
{
DelegateChoice
{
delegate: Rectangle {
implicitWidth: 100
implicitHeight: 50
Text { text: display }

MouseArea {
anchors.fill: parent
onClicked:
{
// print value from clicked cell
var idx = tableModel.index(row,column)
console.log("Clicked cell: ", tableModel.data(idx))

// print values from all cells in a row
console.log("Clicked row: ")
for (var i = 0; i < tableModel.columnCount(); i++)
{
var idx2 = tableModel.index(row,i)
var data = tableModel.data(idx2)
console.log(data)
}
} // onClicked
} // MouseArea
} // Rectangle
}// DelegateChoice
} // DelegateChooser
} // TableView

DelegateChooser 允许您为模型创建多个委托(delegate)。如果您只有一个代表(如上例),我不确定使用选择器是否是一种好习惯。但该解决方法非常有效。

关于qt - 如何在 TableView (QML) 中选择一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65733392/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com