我正在尝试向tableView
添加过滤和排序方法,为此我需要使用QSortFilterProxyModel
。我的问题是,我使用QSortFilterProxyModel
的女巫的初始模型需要表格的所有单元格已经在编辑器mod中打开。将QStandardItemModel
添加到QSortFilterProxyModel
后,单元格尚未处于可编辑模式。
这是按预期工作的:
QStandardItemModel *model = new QStandardItemModel(0, 5, this); //reimplemented class
QItemDelegate *mydelegate = new QItemDelegate(this); //reimplemented class
ui -> tableView -> setModel(model);
ui -> tableView -> setItemDelegate (mydelegate);
for(size_t i=0; i<m_BoardingsVector.size(); i++) //a structure from a function that adds rows dynamically
{
model -> insertRows(model -> rowCount(),1);
for(int j=0; j<5; ++j)
ui -> tableView -> openPersistentEditor(model -> index(model -> rowCount() - 1, j));
}
仅当我双击细胞时才显示细胞。这意味着openPersistestentEditor
的{{1}}方法无效。
tableView
答案 0 :(得分:1)
我刚刚遇到这个问题,只是阅读你的问题和代码摘录让我意识到错误:
视图(ui->tableView
)设置为使用一个模型(m_proxyModel
),但编辑器的索引来自不同的模型(model
)。这可能对视图没有任何意义。 1
更改:
ui -> tableView -> openPersistentEditor(model -> index(model -> rowCount() - 1, j));
为:
ui -> tableView -> openPersistentEditor(m_proxyModel -> index(model -> rowCount() - 1, j));
应该照顾好你的问题,我相信。
对我来说,它创建了一个不同的问题,编辑器没有显示在正确的单元格中,但是我的QAbstractProxyModel
的子类实现可能有问题(通常不建议这样做)。
1 我对QAbstractItemView
的{{3}}进行了简短的一瞥,但我还没有找到明确的限制,但这仍然是我能想到的最合理的解释。
的