关于QTableWidget中单元格拖拽实现

时间:2021-01-19 12:39:57   收藏:0   阅读:225

无重写函数实现单元格拖拽

信号和槽

// 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

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!