// 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: 来自一个菜鸟的无奈之举。c++