// signal
void cellPressed(int row, int column) // 传递拖拽起始行列
// slots
void StartDrag(int row, int col)
{
if (col == LAYERFLDCOL) // 确保拖拽列为可拖拽列
{
m_rowFrom= row; // 记录拖拽起始行
}
else
{
m_rowFrom = -1;
}
}
// signal
void cellChanged(int row, int column) // 传递拖拽后改变行列
// slots
void DropEnd(int row, int col)
{
if (col == LAYERFLDCOL && m_rowFrom != -1) // 判断Drop的列是否为可拖拽列
{
QgsField fldTo = m_tmpFld.at(row); // 根据初始数据QList得到最终单元格的数据
QString changeText = fldTo.name(); // 记录
m_tmpFld.replace(row, ui->tableWidget->item(m_rowFrom, LAYERFLDCOL)->text()); // 交换初始数据,用于实时跟进拖拽之后的列中数据,即对应的行即为QList中数据的索引
m_tmpFld.replace(m_rowFrom, changeText);
ui->tableWidget->item(m_rowFrom, LAYERFLDCOL)->setText(changeText); // 更新起始行列中单元格的数据
}
}
Ps: 来自一个菜鸟的无奈之举。
原文:https://www.cnblogs.com/lsm-3-7/p/14296360.html