gpt4 book ai didi

c++ - 为什么 QTableView 扩展选择会忽略我默认选择的行?

转载 作者:行者123 更新时间:2023-11-30 05:12:52 29 4
gpt4 key购买 nike

默认选择第一行,当我按住 shift 选择最后一行时,我希望所有行都将被选中,但没有,它只选择 QTableView 的可见行

我有一个 QTableView 显示来自数据库模型的数据。它被配置为允许扩展选择(ctrl、shift 等)并仅选择行(而不是单元格)。内容会根据其他参数发生变化,每当我更新模型时,我都会默认选择 QTableView 的第一行。

ui->tableView->setModel(model);

ui->tableView->setColumnHidden(UidColumn, true);

ui->tableView->setSelectionMode(QAbstractItemView::ExtendedSelection);
ui->tableView->setSelectionBehavior(QAbstractItemView::SelectRows);
ui->tableView->setEditTriggers(QAbstractItemView::NoEditTriggers);

ui->tableView->verticalHeader()->hide();
ui->tableView->setAlternatingRowColors(true);

// This is done whenever the content changes
QModelIndex index = model->index(0,0);
ui->tableView->setCurrentIndex(index);

我隐藏了垂直标题,因为那里没有什么可显示的,我隐藏了第一列,因为它与用户无关。

第一行显示为选中状态,我什至记录了焦点的变化并且 tableView->selectionModel()->selectedRows() 总是好的(即返回 QModelIndex(0 ,0))。但是,当我按住 Shift 键并单击最后一行时,就好像根本没有选择第一行。

如果我手动选择第一行(或任何一行),下一次 shift-click 将完美运行。如果我按住 ctrl 单击,则多选效果很好。这就像我的默认选择(由代码完成)被 shift-click 忽略了。

最佳答案

默认的 QModelIndex(0,0) 选择一个属于隐藏列的单元格。即使显示为选定的行,显然它会弄乱 shift-selection。

如果我不隐藏第一列,它工作正常。

如果我使用 QModelIndex index = model->index(0,1); 它工作正常。

一个更简单的解决方案是执行ui->tableView->selectRow(0);

关于c++ - 为什么 QTableView 扩展选择会忽略我默认选择的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44303214/

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