效果图:
//初始化
void SetAttrListDlg::init()
{
m_pLeftStandardItemModel = new QStandardItemModel();
m_pRightStandardItemModel = new QStandardItemModel();
ui->listView_left->setModel(m_pLeftStandardItemModel);
ui->listView_right->setModel(m_pRightStandardItemModel);
}
void SetAttrListDlg::init()
{
m_pLeftStandardItemModel = new QStandardItemModel();
m_pRightStandardItemModel = new QStandardItemModel();
ui->listView_left->setModel(m_pLeftStandardItemModel);
ui->listView_right->setModel(m_pRightStandardItemModel);
}
//测试数据
void SetAttrListDlg::on_pushButton_test_clicked()
{
m_pLeftStandardItemModel->clear();
m_pRightStandardItemModel->clear();
void SetAttrListDlg::on_pushButton_test_clicked()
{
m_pLeftStandardItemModel->clear();
m_pRightStandardItemModel->clear();
for (int i=0; i< 10; i++)
{
QStandardItem* item = new QStandardItem(QString("AA你好世界,大家好:%1").arg(i+1));
m_pLeftStandardItemModel->appendRow(item);
}
{
QStandardItem* item = new QStandardItem(QString("AA你好世界,大家好:%1").arg(i+1));
m_pLeftStandardItemModel->appendRow(item);
}
for (int i=0; i<5 ; i++)
{
QStandardItem* item = new QStandardItem(QString("BB:%1").arg(i+1));
m_pRightStandardItemModel->appendRow(item);
}
}
{
QStandardItem* item = new QStandardItem(QString("BB:%1").arg(i+1));
m_pRightStandardItemModel->appendRow(item);
}
}
//添加
void SetAttrListDlg::on_pushButton_add_clicked()
{
QModelIndex lIndex = ui->listView_left->currentIndex();
if (!lIndex.isValid())
{
return;
}
//左边Model数据删除
QList<QStandardItem *> listItem = m_pLeftStandardItemModel->takeRow(lIndex.row());
//右面Model数据添加
int nRightCount = m_pRightStandardItemModel->rowCount();
m_pRightStandardItemModel->insertRow(nRightCount, listItem);
ui->listView_right->setCurrentIndex( m_pRightStandardItemModel->index(nRightCount, 0));
}
void SetAttrListDlg::on_pushButton_add_clicked()
{
QModelIndex lIndex = ui->listView_left->currentIndex();
if (!lIndex.isValid())
{
return;
}
//左边Model数据删除
QList<QStandardItem *> listItem = m_pLeftStandardItemModel->takeRow(lIndex.row());
//右面Model数据添加
int nRightCount = m_pRightStandardItemModel->rowCount();
m_pRightStandardItemModel->insertRow(nRightCount, listItem);
ui->listView_right->setCurrentIndex( m_pRightStandardItemModel->index(nRightCount, 0));
}
//删除
void SetAttrListDlg::on_pushButton_delete_clicked()
{
QModelIndex rIndex = ui->listView_right->currentIndex();
if (!rIndex.isValid())
{
return;
}
//右边Model数据删除
QList<QStandardItem *> listItem = m_pRightStandardItemModel->takeRow(rIndex.row());
//左面Model数据添加
int nLeftCount = m_pLeftStandardItemModel->rowCount();
m_pLeftStandardItemModel->insertRow(nLeftCount, listItem);
ui->listView_left->setCurrentIndex( m_pLeftStandardItemModel->index(nLeftCount, 0));
}
void SetAttrListDlg::on_pushButton_delete_clicked()
{
QModelIndex rIndex = ui->listView_right->currentIndex();
if (!rIndex.isValid())
{
return;
}
//右边Model数据删除
QList<QStandardItem *> listItem = m_pRightStandardItemModel->takeRow(rIndex.row());
//左面Model数据添加
int nLeftCount = m_pLeftStandardItemModel->rowCount();
m_pLeftStandardItemModel->insertRow(nLeftCount, listItem);
ui->listView_left->setCurrentIndex( m_pLeftStandardItemModel->index(nLeftCount, 0));
}
//上移
void SetAttrListDlg::on_pushButton_moveUp_clicked()
{
QModelIndex index = ui->listView_right->currentIndex();
moveRow(index.row(), index.row()-1);
}
void SetAttrListDlg::on_pushButton_moveUp_clicked()
{
QModelIndex index = ui->listView_right->currentIndex();
moveRow(index.row(), index.row()-1);
}
//下移动
void SetAttrListDlg::on_pushButton_moveDown_clicked()
{
QModelIndex index = ui->listView_right->currentIndex();
moveRow(index.row(), index.row()+1);
}
void SetAttrListDlg::on_pushButton_moveDown_clicked()
{
QModelIndex index = ui->listView_right->currentIndex();
moveRow(index.row(), index.row()+1);
}
//移动
void SetAttrListDlg::moveRow(int nCurrentRow, int nToRow)
{
if( nCurrentRow == nToRow)
{
return;
}
void SetAttrListDlg::moveRow(int nCurrentRow, int nToRow)
{
if( nCurrentRow == nToRow)
{
return;
}
int column = ui->listView_right->currentIndex().column();
if(nullptr == m_pRightStandardItemModel || nCurrentRow < 0 || nToRow > m_pRightStandardItemModel->rowCount()-1)
{
return ;
}
if(nullptr == m_pRightStandardItemModel || nCurrentRow < 0 || nToRow > m_pRightStandardItemModel->rowCount()-1)
{
return ;
}
if( nCurrentRow < nToRow )
{
//下移需要判断最后一行,不移动
if(nCurrentRow == m_pRightStandardItemModel->rowCount()-1)
{
return;
}
}
else
{
//上移需要判断是否第一行,不移动
if(0 == nCurrentRow)
{
return ;
}
}
{
//下移需要判断最后一行,不移动
if(nCurrentRow == m_pRightStandardItemModel->rowCount()-1)
{
return;
}
}
else
{
//上移需要判断是否第一行,不移动
if(0 == nCurrentRow)
{
return ;
}
}
QList<QStandardItem *> listItem = m_pRightStandardItemModel->takeRow(nCurrentRow);
m_pRightStandardItemModel->insertRow(nToRow, listItem);
m_pRightStandardItemModel->insertRow(nToRow, listItem);
ui->listView_right->setCurrentIndex( m_pRightStandardItemModel->index(nToRow, column) );
}
}