1

我在 QML 中创建了一个 TableView,连接到一个 SoftFilterProxyModel。数据显示正常,当我点击一行时,我的“selectRow”函数运行,并接收到正确的行号。但是,没有任何内容显示为选中状态。我的设计基于这个 SO question

相关代码为:

ItemSelectionModel {
    id: companyTableISM
    model: companySFPM
}

function selectRow(row) {
    console.log("In selectRow row "+row);
    companyTableISM.select(companySFPM.index(row, 0), ItemSelectionModel.select | ItemSelectionModel.current );
    console.log(companyTableISM.selectedIndexes);
    console.log(companyTableISM.hasSelection);
}

因此,当我单击一行时,它会输出:

qml: In selectRow row 3
qml: []
qml: false

由于我的 selectRow 函数接收到正确的行号,模型(companySFPM)与 TableView 使用的模型匹配,为什么我的 2 条日志语句显示没有选中和错误(hasSelection)?

4

2 回答 2

2

我相信你有两个错别字:

ItemSelectionModel.select | ItemSelectionModel.current

注意枚举类型的大小写?它应该是:

ItemSelectionModel.Select | ItemSelectionModel.Current
于 2022-01-19T14:03:12.190 回答
0

Current 和 Select 是 的选择标志枚举select()。有关更多选择标志,您可以阅读内容。将 select 和 current 的 s 和 c 替换为大写字母。

companyTableISM.select(companySFPM.index(row, 0), ItemSelectionModel.Select | ItemSelectionModel.Current);
于 2022-01-21T04:06:28.980 回答