80 lines
2.2 KiB
C++
80 lines
2.2 KiB
C++
#ifndef DATASLOTHELPER_H
|
||
#define DATASLOTHELPER_H
|
||
|
||
#include <QObject>
|
||
#include <QTableWidget>
|
||
class PinkTableData
|
||
{
|
||
|
||
public:
|
||
explicit PinkTableData();
|
||
PinkTableData(const QTableWidgetSelectionRange &range,const QList<QStringList> &rowdata);
|
||
PinkTableData( const PinkTableData & other);
|
||
~PinkTableData();
|
||
PinkTableData operator =(const PinkTableData &other);
|
||
QTableWidgetSelectionRange m_Range;
|
||
QList<QStringList> 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<PinkTableData> &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<PinkTableData> &data);
|
||
//刷新表格视图数据
|
||
void updateTableView(QTableWidget *table,const QStringList& rowsData,int row);
|
||
//分离表格数据和范围
|
||
void pinkTableDataRanges(const QList<PinkTableData> &pinkData,
|
||
QList<QTableWidgetSelectionRange> &ranges,QList< QList<QStringList> > &rowsData);
|
||
//重置数据行
|
||
void resetNewDaataRow(QList< QList<QStringList> > & restDataRow,bool isUp);
|
||
//重置选择区域
|
||
void resetRangeSelection(QTableWidget* table);
|
||
//合并单选行
|
||
void megerRange(QList<QTableWidgetSelectionRange> &rangeLst,const QList<QTableWidgetSelectionRange> &selRanges);
|
||
|
||
private:
|
||
|
||
explicit DataSlotHelper(QObject *parent=NULL);
|
||
class GC{
|
||
public:
|
||
~GC();
|
||
};
|
||
private:
|
||
static DataSlotHelper *p_helper;
|
||
GC m_gc;
|
||
//源行数据
|
||
QList<PinkTableData> m_sourceRowsData;
|
||
//目标数据
|
||
QList<PinkTableData> m_descRowsData;
|
||
|
||
|
||
};
|
||
|
||
#endif // DATASLOTHELPER_H
|