这让我发疯了。我基本上无法在我的子类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()。我甚至在每次点击鼠标之前都做了检查以确保。这之前有用,所以我确定我在某处介绍了一些东西,但我不确定还应该检查什么。
思考?
答案 0 :(得分:0)
如果你在继承的类中有像View这样的表,那么我将远离自己实现所有函数。如果您可以使用默认选择模型,则无需实现这些功能。在这种情况下,它会自动调用默认函数。
答案 1 :(得分:0)
好吧,我想出来了,是的,如果我发布了代码,有人会得到它但我担心由于项目的规模,它可能会转变为任何人。我也不知道你可以在模型中选择关闭(而不是视图)。
Qt::ItemFlags QAbstractTableModel::flags( const QModelIndex& index ) const
{
// snip
return Qt::NoItemFlags;
}
那是罪魁祸首。有一个极端情况,它返回上面的内容并禁用模型级别的选择(覆盖使索引可选的默认行为)。