void TableWidget::move(bool up)
{
Q_ASSERT(selectedItems().count() > 0);
const int sourceRow = row(selectedItems().at(0));
const int destRow = (up ? sourceRow-1 : sourceRow+1);
Q_ASSERT(destRow >= 0 && destRow < rowCount());
// take whole rows
QList<QTableWidgetItem*> sourceItems = takeRow(sourceRow);
QList<QTableWidgetItem*> destItems = takeRow(destRow);
// set back in reverse order
setRow(sourceRow, destItems);
setRow(destRow, sourceItems);
}
// takes and returns the whole row
QList<QTableWidgetItem*> TableWidget::takeRow(int row)
{
QList<QTableWidgetItem*> rowItems;
for (int col = 0; col < columnCount(); ++col)
{
rowItems << takeItem(row, col);
}
return rowItems;
}
// sets the whole row
void TableWidget::setRow(int row, const QList<QTableWidgetItem*>& rowItems)
{
for (int col = 0; col < columnCount(); ++col)
{
setItem(row, col, rowItems.at(col));
}
}
void TableWidget::move(bool up)
{
Q_ASSERT(selectedItems().count() > 0);
const int sourceRow = row(selectedItems().at(0));
const int destRow = (up ? sourceRow-1 : sourceRow+1);
Q_ASSERT(destRow >= 0 && destRow < rowCount());
// take whole rows
QList<QTableWidgetItem*> sourceItems = takeRow(sourceRow);
QList<QTableWidgetItem*> destItems = takeRow(destRow);
// set back in reverse order
setRow(sourceRow, destItems);
setRow(destRow, sourceItems);
}
// takes and returns the whole row
QList<QTableWidgetItem*> TableWidget::takeRow(int row)
{
QList<QTableWidgetItem*> rowItems;
for (int col = 0; col < columnCount(); ++col)
{
rowItems << takeItem(row, col);
}
return rowItems;
}
// sets the whole row
void TableWidget::setRow(int row, const QList<QTableWidgetItem*>& rowItems)
{
for (int col = 0; col < columnCount(); ++col)
{
setItem(row, col, rowItems.at(col));
}
}
To copy to clipboard, switch view to plain text mode
Bookmarks