Changing column order in a QTableView?
-
I would use a much simpler approach, without any subclassing.
QTableView provides access to the header view via QTableView::horizontalHeader(). QHeaderView has a method called moveSection, that allows you to reorder the sections (in this case: columns) as you please. -
[quote author="Andre" date="1300615403"]I would use a much simpler approach, without any subclassing.
QTableView provides access to the header view via QTableView::horizontalHeader(). QHeaderView has a method called moveSection, that allows you to reorder the sections (in this case: columns) as you please.[/quote]
That's exactly what he's doing, so there's something else going on (wrong section numbers?)
-
[quote author="peppe" date="1300626770"]
[quote author="Andre" date="1300615403"]I would use a much simpler approach, without any subclassing.
QTableView provides access to the header view via QTableView::horizontalHeader(). QHeaderView has a method called moveSection, that allows you to reorder the sections (in this case: columns) as you please.[/quote]
That's exactly what he's doing, so there's something else going on (wrong section numbers?)[/quote]
Not exactly, but close, you're right. scarleton, could you insert some debug statement to see the actual values of the sections you're trying to swap?
André
-
Well, I added extracted the values:
@productTableHeaderView->setMovable(true);
int priceVisualIdx = productTableHeaderView->sectionPosition(_priceListItemModel->priceNo());
int imageMaxVisualIdx = productTableHeaderView->sectionPosition(_priceListItemModel->imageMaxCntNo());
qDebug("priceVisualIdx: %d imageMaxVisualIdx: %d", priceVisualIdx, imageMaxVisualIdx);
productTableHeaderView->swapSections (imageMaxVisualIdx, priceVisualIdx);@priceVisualIdx: 100 imageMaxVisualIdx: 300
-
So, it's likely that those values are actually the position in pixels of those sections. If
@
_priceListItemModel->priceNo()
_priceListItemModel->imageMaxCntNo()
@
are correct (i.e. they return the logical column index), you can pass them directly to swapSections.