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