QListWidget用法

QListWidget用法一、参考https://blog.csdn.net/qq_37233607/article/details/78145118QListWidget类重要的函数:1.voidaddItem(constQWidgetItem*);//加入一个项.需要自己先创建一个项的对象.示例如下:QListWidgetItem*ite=newQListWidgetItem;ite->setText(QString::fromLocal8Bit(“杭州”));ui.listWidge

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

一、参考

https://blog.csdn.net/qq_37233607/article/details/78145118

QListWidget类重要的函数:
1.void addItem(const QWidgetItem*); //加入一个项.需要自己先创建一个项的对象.
示例如下:

QListWidgetItem *ite = new QListWidgetItem;
ite->setText(QString::fromLocal8Bit("杭州"));
ui.listWidget->addItem(ite);

2.void addItems(const QStringList &); //加入多个项,项是预先放在QStringList容器中的,或者使用临时容器存放,示例如下:

ui.listWidget->addItems(QStringList()<<QString::fromLocal8Bit("北京")<<QString::fromLocal8Bit("上海")<<QString::fromLocal8Bit("杭州"));

3.int count(); //返回该ListWidget对象的项数.(包括隐藏的项).

4.void setViewMode(QListView::); //设置QListWidget对象的显示模式.默认是列表模式.
第一种:QListView::ListMode. //列表模式.
第二种:QListView::IconMode. //图标模式.

ui.listWidget->setViewMode(QListView::IconMode);

5.int currentRow(); //返回当前选择项的行.从0开始,可以看成是当前项在QListWidget中的下标.

6.void setSortEnabled(bool); //设置是否激活排序.

7.void sortItems(Qt::SortOrder); //设置项排序的方式.默认是从AAA-ZZZ排序.(当使用此函数后,自动激活排序).
第一种:Qt::DescendingOrder: 从ZZZ到AAA排序.
第二种:Qt::AscendingOrder: 从AAA到ZZZ排序.

ui.listWidget->sortItems(Qt::DescendingOrder);

8.QListWidgetItem* takeItem(int); //移除指定下标的项,并且返回指向它的指针,用于释放内存,避免内存泄漏.

QListWidgetItem* ite = ui.listWidget->takeItem(ui.listWidget->currentRow());
    if (ite != 0)
        delete ite;

9.void insertItem(int, const QString&); //在指定位置插入一个项,如果在下标为2的位置插入一个项的话,那么这个项就占据下标为2的位置.

10.QListWidgetItem* item(int); //返回指定下标的项的指针.

11.int row(QListWidgetItem*); //返回指定项的下标.

12.void clear(); //清空QListWidget对象的所有内容.

QListWIdget信号
1.void itemChanged(QListWidgetItem * item); //项的内容被改变发出信号.
2.void itemClicked(QListWidgetItem * item); //项被点击发出信号.
3.void itemSelectionChanged(); //项的选择清空发生改变发出信号.
 

二、demo

参考 https://blog.csdn.net/jiezhj/article/details/37924727

//构建QListWidget对象
    listWin = new QListWidget(this);
 
    //设置item对齐方式
    listWin->setFlow(QListWidget::LeftToRight);
 
    //设置调色板
    QPalette pal;
    //设置交替颜色
    pal.setColor(QPalette::AlternateBase,QColor(Qt::gray));
    //设置文字颜色
    pal.setColor(QPalette::Text,QColor(Qt::blue));
    //设置背景色
    pal.setColor(QPalette::Base,QColor(148,220,145));
 
    //设置颜色交替
    listWin->setAlternatingRowColors(true);
    //在listWin中加入item
    listWin->setPalette(pal);
    listWin->addItem(new QListWidgetItem(QIcon(":/new/listWidget/dialog-close.png"),"关闭按钮\nsdfs\nsssss"));
    listWin->addItem(new QListWidgetItem(QIcon(":/new/listWidget/dialog-cancel.png"),"取消按钮"));
    listWin->addItem(new QListWidgetItem(QIcon(":/new/listWidget/dialog-close.png"),"关闭按钮\nsdfs"));
    listWin->addItem(new QListWidgetItem(QIcon(":/new/listWidget/settings.png"),"设置按钮"));
    listWin->addItem(new QListWidgetItem(QIcon(":/new/listWidget/task-ongoing.png"),"任务按钮"));
    listWin->addItem(new QListWidgetItem(QIcon(":/new/listWidget/view-refresh.png"),"刷新按钮"));
 
    //设置显示模式为图标模式
    listWin->setViewMode(QListWidget::IconMode);
    //设置可以换行显示
    listWin->setLayoutMode(QListWidget::Batched);
    //不接受拖放
    listWin->setAcceptDrops(false);
    //开启排序功能
    listWin->setSortingEnabled(true);
    //设置当前活动行为3
    listWin->setCurrentRow(2);
    listWin->setEditTriggers(QListWidget::DoubleClicked);
    //将listWin加入布局
    ui->verticalLayout->addWidget(listWin);
 

QListWidget用法

三、参照

https://blog.csdn.net/dk29030901065/article/details/49963235

QListWidget,QT列表控件,与QListView控件类似。

两者的本质区别是:QListWidget是基于Item,而QListView是基于Model的。

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

在QListView中添加Item项需要借助QAbstractListModel,如:

    QStringListModel* slm = new QStringListModel(this);
    QStringList* sl = new QStringList();
    sl->append("asdfsadfsa");
    sl->append("asdfsadfsa");
    sl->append("asdfsadfsa");
    slm->setStringList(*sl);
    ui->listView->setModel(slm);
    delete sl;

在QListWidget中添加Item项可以直接addItem,如:

  QListWidget list;
  list.setViewMode(QListWidget::IconMode );
  list.setResizeMode(QListWidget::Adjust);
  list.setMovement(QListWidget::Static);
  for(int i =0; i < 100 ; i ++)

  {
     QListWidgetItem *item = new QListWidgetItem();

     list.addItem(Item);

  }

我们可以通过信号和槽的方式对列表控件的选项进行响应,如

connect(list,SIGNAL(currentTextChanged(QString)),this,SLOT(setText(QString)));

QListWidget常用API:

setIconSize(QSize(212,145)):设置单元项大小,

setMovement(QListView::Static):设置单元项不可拖动,(Static、Free、Snap)

setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff):设置垂直滚动条显示方式(ScrollBarAsNeeded:按需显示,ScrollBarAlwaysOff:隐藏,ScrollBarAlwaysOn:常显)

 

QListWidgetItem常用API:

setSizeHint(QSize(209,144)):设置单元项的宽度和高度

setIcon(QIcon(imgPix.scaled(QSize(201,135),Qt::IgnoreAspectRatio,Qt::SmoothTransformation))):设置图像

其中,scaled为缩放图像方法,

(FastTransformation:低分辨率的图片,SmoothTransformation:高分辨率的图片)

 QListWidget用法
四、

QListWidget
QListWidget类提供了一个基于item的列表小部件。QListWidget是一个方便的类,它提供了类似于QlistView所具有的列表视图,但是具有增加和删除的功能。QListWidget使用内部模型来管理列表中的每个QListWidgetItem。想要有更灵活的列表视图,请使用具有标准模型的QListView类。

QlistWidget有两种方法追加数据,一种是一个个增加,还有一种是批量增加:

首先我们对QlistWidget做一个初始化:

    this->setGeometry(100,100,200,200);

    QListWidget*list=newQListWidget(this);

list->setGeometry(50,50,100,100);

 

QlistWidget追加数据方法一
 

    //方法一

    QListWidgetItem*item=newQListWidgetItem;

    item->setText("方法一");

    list->addItem(item);

这种方法最简单,适合少量添加。比如音乐播放器的列表,用户需要增加一首歌曲到列表,那用这种方法最简单。

QlistWidget追加数据方法二
 

    //方法二

    QStringList  strList;

    strList<<QString("第二行")<<QString("第三行")<<QString("第四行");

    list->addItems(strList);

方法二相比方法一更适合批量添加,比如音乐播放器的用户有一百首歌曲要添加,你可以使用该功能批量添加。

QlistWidget还有另一种void QListWidget::insertItem(int row, QListWidgetItem *item)函数,用来在指定的地方插入数据。要注意的是它有两个参数,其中的row参数,也就是行数,是从0开始计数的这一点和索引一样,所以要特别注意。

addItems()和insertItem()的区别在于前者在末尾追加数据,后者可以在任意位置插入数据。

QlistWidget设置图标
只需要简单的设置即可,QListWidgetItem提供了setIcon()函数来实现。

    //设置图标

    item->setIcon(QIcon(":/new/prefix1/img/Tux.png"));

QlistWidget设置选择方式
QlistWidget默认的选择模式是单选,在更多的时候需要设置多选模式,我们可以用如下的代码:

//指定选择模式

    list->setSelectionMode(QAbstractItemView:: ExtendedSelection);

如果你只看名字,或许会选择QAbstractItemView::MultiSelection作为选择模式,但是QAbstractItemView::ExtendedSelection才是我们常见的模式,也就是以扩展的形式来多选。具体可以自己测试两种的区别。

 

针对选择模式,主要有以下几种:

我就不一一翻译了,英文浅显易懂。
 

QAbstractItemView::SingleSelection

QAbstractItemView::ContiguousSelection

QAbstractItemView::ExtendedSelection

QAbstractItemView::MultiSelection

QAbstractItemView::NoSelection

 

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

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/134881.html原文链接:https://javaforall.net

(0)
上一篇 2022年6月6日 上午8:16
下一篇 2022年6月6日 上午8:16


相关推荐

  • tcpdf中文字体_pdf和tif有什么区别

    tcpdf中文字体_pdf和tif有什么区别最近在做将网页内容输出成pdf文档方面的一个项目,找了好多类,php_pdflib,fpdf,HTML_topdf等等,不过最终还是发现这个好用,究其汉字处理方面发现了写一篇文章,就抄过来了,以供大家参考。 TCPDF是一个用于快速生成PDF文件的PHP5函数包。TCPDF基于FPDF进行扩展和改进。支持UTF-8,Unicode,HTML和XHTML。在基于PHP开发的Web应用中,…

    2025年10月2日
    4
  • php 关闭call stack,Thinkphp Call Stack,PHP调用栈Call Stack的获取

    php 关闭call stack,Thinkphp Call Stack,PHP调用栈Call Stack的获取ThinkPHP 中有一个 debug 调试功能 能输出报错文件的信息 并能看到这个函数被哪些函数调用 从框架的启动开始记录 特别方便调试 于是研究了下它的底层给予了实现

    2026年3月16日
    2
  • 转录组测序火山图_转录组差异基因筛选标准

    转录组测序火山图_转录组差异基因筛选标准利用R包DEseq2进行差异表达分析和可视化count数矩阵在Linux下,通过HISAT2对下载的GSE数据进行比对,FeatureCounts软件进行基因水平定量,得到count数矩阵。之后便可以载入R语言中进行差异分析。差异分析第一次分析RNA-seq数据,走到这一步相对容易了许多。转录组数据分析主要参考了生信技能树Jimmy老师的相关课程及推文。RNA-seq的readcount普遍认为符合泊松分布,但是之前分析过的芯片数据符合正态分布,所以筛选DEGs的方法有一定差别。.

    2022年8月30日
    8
  • 信息搜集 – 二层发现 arping[通俗易懂]

    信息搜集 – 二层发现 arping[通俗易懂]0x00:简介在被动信息搜集工作完成后,需要在进一步的对目标进行主动信息搜集,这一阶段主要搜索的信息包括目标主机是否存活,上面开放了哪些端口,有哪些服务,服务系统是什么,开发服务的版本以及上面支撑系统运行的一些中间件或者其他软件的版本(后续可根据版本号查看是否有公开的漏洞问题),在目标主机发现的过程中,不仅要发现目标是否存活,还要发现其整个网段下的其他设备,同时,这些其他设备也应该像目标一样搜…

    2022年5月30日
    41
  • unity2d3d结合_unity3d脚本编程与游戏开发

    unity2d3d结合_unity3d脚本编程与游戏开发Unity3D数字孪生笔记(八)一、脚本介绍1、脚本1>介绍2>语法结构3>编译过程4>修改脚本模板2、开发工具1>MonoDevelop2>VisualStudio3>Console3、脚本生命周期4、调试1>使用Unity编辑器2>使用VS3>使用MonoDevelop二、常用API1、Component2、Transform3、GameObject4、Time一、脚本介绍1、脚本1>介绍脚本是附加在游戏物体上用于定义游戏对

    2026年1月21日
    5
  • curl源码编译安装

    curl源码编译安装平台:Ubuntu20方法一:apt-get使用内置的apt下载工具进行安装,sudoapt-getinstallcurl方法二:从官网下载压缩包在官网可以找到curl的多个版本,http://curl.haxx.se/download/wgethttps://curl.haxx.se/download/curl-7.55.1.tar.gztar-xzvfcurl-7.55.1.tar.gzcdcurl-7.55.1./configurema

    2022年7月20日
    16

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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