Qt QListWidget详解

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

大家好,又见面了,我是你们的朋友全栈君。

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("王二"));

Qt QListWidget详解

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

Qt QListWidget详解

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.添加样式表

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

Qt QListWidget详解

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.5502QTreeWidget详解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

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/134822.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • ETL工具-Kettle Spoon教程

    ETL工具-Kettle Spoon教程一。KettleSpoon简介   ETL(Extract-Transform-Load的缩写,即数据抽取、转换、装载的过程),对于企业或行业应用来说,我们经常会遇到各种数据的处理,转换,迁移,了解并掌握一种etl工具的使用,必不可少,支持图形化的GUI设计界面,然后可以以工作流的形式流转,在做一些简单或复杂的数据抽取、质量检测、数据清洗、数据转换、数据过滤等方面有着比较稳定的表现,使…

  • android viewpager实现轮播「建议收藏」

    android viewpager实现轮播「建议收藏」本文是基于ViewPager实现的无限自动轮播banner分为三步:第一部分是有限手动轮播;第二部分是无限轮播;第三部分是自动轮播;第四部分是指示器适配有限手动轮播实现:布局:<androidx.viewpager.widget.ViewPagerandroid:id=”@+id/banner”android:layout_width=”match_parent”android:layout_height=”wrap_content”andro

  • ::WritePrivateProfileString()的用法,以及GetPrivateProfileString的用法注意事项

    ::WritePrivateProfileString()的用法,以及GetPrivateProfileString的用法注意事项WritePrivateProfileString(_T("Section1"),_T("Field1"),Field,savePath);函数说明,这是在写

  • 增长黑客目录_黑客手册书籍

    增长黑客目录_黑客手册书籍增长黑客手册——02增长黑客的数据分析方法趋势分析多维分解漏斗分析用户画像细查路径留存分析A/B测试增长黑客的能力市场营销技能搜索引擎优化(SearchEngineOptimization)营销自动化(MarketingAutomation)病毒传播(ViralRefferal)内容营销工程开发技能应用程序接口A/B测试数据分析技能数据统计数据分析数据的9款工具市场营销工具产品工程工具数据分析增长黑客的数据分析方法趋势分析通过对业务指标的检测研究用户规律,寻找增长点多维分解从多个维度进行拆

  • STM32CubeMX实战教程(三)——外部中断(中断及HAL_Delay函数避坑)

    STM32CubeMX实战教程(三)——外部中断(中断及HAL_Delay函数避坑)前言学单片机的,相信对中断的概念都已经了如指掌了,中断具体是什么我在这里也就不再详细说明,不懂的上网找找也一大堆。那么在介绍实验之前我先跟大家简单讲讲STM32当中的NVIC(嵌套向量中断控制器)NVICNVIC(嵌套向量中断控制器)。NVIC就是控制中断响应的。主要由三个参数,一个是中断使能,一个是抢占优先级,还有一个就是响应优先级。(优先级数值越小,优先级别越高)中断使能很好理解,就是…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号