QTableView 没有选择

Posted

技术标签:

【中文标题】QTableView 没有选择【英文标题】:QTableView no selection 【发布时间】:2014-12-30 20:54:37 【问题描述】:

这快把我逼疯了。我基本上无法在我的子类 QTableView 中获得选择。这是一个相当大的项目,大部分拼图已经被细分。但是,我觉得我基本上已经检查了所有内容:

QTableView::selectionModel(); // returns Qt::ExtendedSelection
QTableView::selectionBehavior(); // returns Qt::SelectItems
QTableView::QItemSelectionModel::hasSelection(); // returning false, which makes sense.
QStyledItemDelegate::paint(); // In here I check the selection (and give it a special background if selected, but it's not, as expected)

我没有在任何地方明确设置 selectionMode() 或 selectionBehavior()。我什至在每次点击鼠标时都做了上面的检查,以确保。这以前有效,所以我确定我在某个地方介绍了一些东西,但我不确定我还应该检查什么。

想法?

【问题讨论】:

你能说得更具体点吗?你提供的信息远远不够。 【参考方案1】:

如果您在继承类中有类似 View 的表,那么我将远离自己实现所有功能。如果您可以使用默认选择模型,那么您不需要实现这些功能。在这种情况下,它会自动调用默认函数。

【讨论】:

这就是我认为我正在做的事情 - 我有几次重新实现一些鼠标功能,但我总是在我施展魔法后调用基类。 IE: myTableView::mousePressEvent(QMouseEvent* 事件) doMyFunc(); QTableView::mousePressEvent(事件); 甚至将它们全部注释掉,但得到了相同的结果。 :( 找到问题的唯一方法是分析您的视图代码。否则是不可能的。 对...虽然有很多(模型、视图、委托)可能会破坏它,这就是为什么我想我会在通常的嫌疑人中发布我正在做的事情。跨度> 【参考方案2】:

好的,我想通了,是的,如果我发布代码有人会得到它,但我担心由于项目的规模,它可能会变成任何人。我也不知道您可以在模型(而不是视图)中关闭选择。

Qt::ItemFlags QAbstractTableModel::flags( const QModelIndex& index ) const

    // snip
    return Qt::NoItemFlags;

那是罪魁祸首。有一个极端情况,它返回上述内容并禁用模型级别的选择(覆盖使索引可选的默认行为)。

【讨论】:

以上是关于QTableView 没有选择的主要内容,如果未能解决你的问题,请参考以下文章

PyQt4 - QTableView - 如何循环 QTableView

QTableView高级选择

QTableView 没有行区的信号

选择多行时QTableView变得很慢

选择单元格时,更改 QTableView 中图标的颜色突出显示

如何使用QCombobox选择更新QTableView单元?