Skip to content

Qt QListWidget详解

1.QListWidget和QListView 

QListWidget是继承QListView,QListView是基于Model的,需要自己来建模(如建立QStringListModel,QSqlTableModel等),保存数据,这样就大大降低了数据冗余,提高了程序的效率,但是需要我们对数据建模有一定的了解,而QListWidget是一个升级版本的QListView,它已经为我们建立了一个数据存储模型QListWidgetItem,操作方便,直接调用addItem即可添加Item项。 

2.常用API

void addItem(const QString &label)  //添加一项标签

void  addItem(QListWidgetItem *item) //添加一项item

void  insertItem(int row, QListWidgetItem *item)  //在row行后添加一项item

QListWidgetItem *  item(int row) //在row行的项

QListWidgetItem *takeItem(int row)  //删除第row行的项,注意qt不会给你释放内存,需要手动释放,只会从界面上删除该项

void clear() //清空界面

void setAlternatingRowColors(bool) //设置是否开启交替颜色显示

以下信号都会常用signals:

void currentItemChanged(QListWidgetItem *current, QListWidgetItem *previous) //当前项改变发出信号

void currentRowChanged(int currentRow) //当前行改变发出信号

void currentTextChanged(const QString &currentText) //当前项改变发出信号

void itemClicked(QListWidgetItem *item)  //点击项时发出信号

void itemDoubleClicked(QListWidgetItem *item) //双击发出信号

void itemEntered(QListWidgetItem *item) //鼠标进入某项发出信号

void itemPressed(QListWidgetItem *item) //鼠标按住某项发出信号

void itemSelectionChanged() //改变选择项时发出信号

3.示例

 ①添加标签

ui.listWidget->addItem(QString("张三"));
ui.listWidget->addItem(QString("李四"));
ui.listWidget->addItem(QString("王二"));

②添加自定义界面(一个下载客户端界面)

QListWidgetItem *item1 = new QListWidgetItem(ui.listWidget);
item1->setSizeHint(QSize(100, 60));
ListItem *list1 = new ListItem(ui.listWidget);
ui.listWidget->addItem(item1);
ui.listWidget->setItemWidget(item1, list1);


QListWidgetItem *item2 = new QListWidgetItem(ui.listWidget);
item2->setSizeHint(QSize(100, 60));
ListItem *list2 = new ListItem(ui.listWidget);
ui.listWidget->addItem(item2);
ui.listWidget->setItemWidget(item2, list2);

QListWidgetItem *item3 = new QListWidgetItem(ui.listWidget);
item3->setSizeHint(QSize(100, 60));
ListItem *list3 = new ListItem(ui.listWidget);
ui.listWidget->addItem(item3);
ui.listWidget->setItemWidget(item3, list3);

QListWidgetItem *item4 = new QListWidgetItem(ui.listWidget);
item4->setSizeHint(QSize(100, 60));
ListItem *list4 = new ListItem(ui.listWidget);
ui.listWidget->addItem(item4);
ui.listWidget->setItemWidget(item4, list4);

//删除当前项
//int row=ui->listWidget->currentRow();//当前行
//QListWidgetItem* aItem=ui.listWidget->takeItem(row); //移除指定行的项,但不delete
//delete aItem; //需要手工删除对象

//takeItem() 函数只是移除一个项,并不删除项对象,所以还需要用 delete 从内存中删除它。要清空列表框的所有项,只需调用 QListWidget::clear() 函数即可。

4.添加样式表

简单添加一些选中项的颜色,仅供参考。

QListView 
{
      show-decoration-selected: 1; /* make the selection span the entire width of the view */
}

QListView::item:alternate 
{
      background: #EEEEEE;
}

QListView::item:selected 
{
      border: 1px solid #6a6ea9;
}

QListView::item:selected:!active 
{
      background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
                                  stop: 0 #ABAFE5, stop: 1 #8588B2);
}

QListView::item:selected:active
{
      background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
                                  stop: 0 #6a6ea9, stop: 1 #888dd9);
}

QListView::item:hover
{
      background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,
                                  stop: 0 #FAFBFE, stop: 1 #DCDEF1);
}
//适用于开启交替颜色
QListWidget#listWidget
{
    alternate-background-color:blue;background:yellow
}

 5.完整源码

  QtWidgetsApplication1.zip_qtlistwidget-互联网其他资源-CSDN下载

6.相关推荐

QTreeView详解icon-default.png?t=M276https://blog.csdn.net/wzz953200463/article/details/123643823?spm=1001.2014.3001.5502 QTreeWidget详解icon-default.png?t=M276https://blog.csdn.net/wzz953200463/article/details/109996501

QTableWidget详解icon-default.png?t=M276https://blog.csdn.net/wzz953200463/article/details/110004261

QTableView详解icon-default.png?t=M276https://blog.csdn.net/wzz953200463/article/details/123645541?spm=1001.2014.3001.5502

QListView详解icon-default.png?t=M276https://blog.csdn.net/wzz953200463/article/details/123646413?spm=1001.2014.3001.5502

 


PHP网站源码哈尔滨优化多少钱南阳至尊标王公司西安外贸网站设计昆明百度网站优化推荐宜春外贸网站制作价格荆州模板推广丹东seo多少钱庆阳网页制作报价河池百度网站优化排名六安网站定制价格遵义网络推广多少钱铜川网站搭建价格温州推广网站苏州关键词按天收费哪家好光明关键词按天计费哪家好沧州网站优化哪家好新乡企业网站改版价格永新网络广告推广通化营销型网站建设价格芜湖建站公司鹤壁推广网站报价贵阳网站优化按天收费报价鸡西品牌网站设计报价昌吉网站定制公司玉树建网站推荐天水网页制作哪家好大芬高端网站设计公司太原百度标王报价珠海企业网站设计价格连云港模板制作报价歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

PHP网站源码 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化