C++

18.QListView添加删除修改的应用--Apple的学习笔

2021-07-30  本文已影响0人  applecai

一 ,前言

今天开始做表格相关的刻意练习,先从常见及比较简单的listview开始。

二,需求

做一个listview,可以添加,删除,修改及复制。

三,遇到的问题

1. QListview如何添加行及设置内容
答:QListview是用来显示的,所以只要模型insertRow即可。新增行的内容设置是通过先定位,然后在位置中setdata。如下newItem我绑定到了新建按钮信号上。

void Widget::newItem()
{
    QModelIndex index;
    //尾插法
    slm->insertRow(slm->rowCount());
    //获取最后一个索引,数组索引值都是比总数小1的
    if(!slm->rowCount())
    {
        index=slm->index(0,0);
    }
    else
    {
        index=slm->index(slm->rowCount()-1,0);
    }
    //为index位置设置值。
    slm->setData(index,"newElement");
    //设置当前选中的行
    listView->setCurrentIndex(index);
    //pages页面同时进行切换
    pages->setCurrentIndex(1);
}

2. QListview选中项的删除方法?
答:方法是删除model数据。

void Widget::deleteItem()
{
    QModelIndex index=listView->currentIndex();
    slm->removeRow(index.row());
}

3. QListview选中项的复制方法?
答:与新增雷同。其实我应该要打包封装下的。

void Widget::copyItem()
{
    QString val = listView->currentIndex().data().toString();
    if(val == "")
    {
        /* 无复制对象,直接跳出 */
    }
    else
    {
        QModelIndex index;
        slm->insertRow(slm->rowCount());
        index=slm->index(slm->rowCount()-1,0);
        slm->setData(index,val);
        //设置当前选中的行
        listView->setCurrentIndex(index);
    }
}

四,效果

更新了QSS皮肤效果。


image.png

QSS没更新前的动态效果


List添加删除修改效果.gif

五,小结

还没有连接数据库,本次仅学习基于QListView的添加删除修改。之后会继续补充数据库功能,将数据绑定到对应Name的界面信息。

上一篇下一篇

猜你喜欢

热点阅读