QTreeView + sort model + QStandardItemModel, the most efficient way to update the model?
-
@antis said:
Right, but QAbstractItemView has:
tableView->setSelectionBehaviour( QAbstractItemView::SelectRows );That it does! And like I said, I have set this option. the table view does select a whole row, but it does not span the cursor across the whole row. While the tree view does both no problem.
That it does! And like I said, I have set this option. the table view does select a whole row, but it does not span the cursor across the whole row. While the tree view does both no problem.
Got me. The dotted rectangle's shows the editing focus. Logically, the focus lies always on the focused table cell. In a QTreeView on the other hand, it lies on the the tree item. You can paint the focus rect over the whole table row by overriding "QTableView::paint".
-
First, the table view is what you want for your use case. So please don't switch the view.
Ok, I did some further research:
My default file manager (and the file dialogs itself) display the focus around the item in the first column. This makes total sense, as this is the only editable column (the file name). The flag is defined inQAbstractTableModel::flags, which you need to override:Qt::ItemFlags MyTableModel::flags(const QModelIndex & index) const { if (index.column() > 0) { // remove focusable flag for all columns > 0 return QAbstractTableModel::flags(index) & ~Qt::ItemIsEditable; } return QAbstractTableModel::flags(index); }EDIT: Corrected the code snippet.
-
Thanks. This is counter-intuitive, but as long as I can fix it reliably for all platforms with 3 lines of code - why not. I've already reverted the change from
QtreeViewtoQTableViewunder the pressure of the issues, but it won't take too long to try again.Filling
QTableViewis about twice as fast asQtreeView, so that's a good incentive, but theQtreeViewdefinitely looks better on Windows (more native). At least so far. For example, the selection style is much different.