首页 > 其他 > 详细

关于QTableWidget中单元格拖拽实现

时间:2021-01-19 12:39:57      阅读:225      评论:0      收藏:0      [点我收藏+]

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

  • 缺点:需要额外设置一个记录拖拽起始行的私有成员变量和拖拽列的初始QList数据成员
  • 优点:无需重构函数,对于QT中信号和槽的灵活运用

信号和槽

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

关于QTableWidget中单元格拖拽实现

原文:https://www.cnblogs.com/lsm-3-7/p/14296360.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!