#ifndef DATASLOTHELPER_H #define DATASLOTHELPER_H #include #include class PinkTableData { public: explicit PinkTableData(); PinkTableData(const QTableWidgetSelectionRange &range,const QList &rowdata); PinkTableData( const PinkTableData & other); ~PinkTableData(); PinkTableData operator =(const PinkTableData &other); QTableWidgetSelectionRange m_Range; QList m_rowData; }; class DataSlotHelper : public QObject { Q_OBJECT public: ~DataSlotHelper(); static DataSlotHelper *instance(); //向上移动 void movedUp(QTableWidget *table); //向下移动 void movedDow(QTableWidget *table); private: //获取表格行数据 QStringList tableRowData(QTableWidget* table,int row); //拾取表格数据 void pickTableRangeData(QTableWidget* table ,QList &rangeData); //表格数据改变 isUp 是否向上,moveFixed是否到头固定模式 void tableSelectionRangeChange(QTableWidget *table,bool isUp,bool &moveFixed); //选中移动范围 void rangeMoveRow(int &beginRow,int &endRow,int rowCount,bool isUp,bool &moveFixed); //交换移动原始数据和移动的目标数据 void swapSelRowMoveRow(bool isUp); //刷新移动数据 void updateMoveRowData(QTableWidget* table); //刷新行数据 void updateRowsData(QTableWidget* table,const QList &data); //刷新表格视图数据 void updateTableView(QTableWidget *table,const QStringList& rowsData,int row); //分离表格数据和范围 void pinkTableDataRanges(const QList &pinkData, QList &ranges,QList< QList > &rowsData); //重置数据行 void resetNewDaataRow(QList< QList > & restDataRow,bool isUp); //重置选择区域 void resetRangeSelection(QTableWidget* table); //合并单选行 void megerRange(QList &rangeLst,const QList &selRanges); private: explicit DataSlotHelper(QObject *parent=NULL); class GC{ public: ~GC(); }; private: static DataSlotHelper *p_helper; GC m_gc; //源行数据 QList m_sourceRowsData; //目标数据 QList m_descRowsData; }; #endif // DATASLOTHELPER_H