lxg

导航

 

效果图:

//初始化
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();
    for (int i=0; i< 10; i++)
    {
        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);
    }
}
//添加
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_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::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( nCurrentRow < nToRow )
    {
        //下移需要判断最后一行,不移动
        if(nCurrentRow == m_pRightStandardItemModel->rowCount()-1)
        {
            return;
        }
    }
    else
    {
        //上移需要判断是否第一行,不移动
        if(0 == nCurrentRow)
        {
            return ;
        }
    }
    QList<QStandardItem *> listItem = m_pRightStandardItemModel->takeRow(nCurrentRow);
    m_pRightStandardItemModel->insertRow(nToRow, listItem);
    ui->listView_right->setCurrentIndex( m_pRightStandardItemModel->index(nToRow, column) );
}

posted on 2020-12-16 14:47  lxg_7105  阅读(1151)  评论(0编辑  收藏  举报