一 ,前言
今天开始做表格相关的刻意练习,先从常见及比较简单的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的界面信息。
网友评论