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

 

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

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

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

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

(1)


相关推荐

  • C++能做什么[通俗易懂]

    C++能做什么[通俗易懂]C++Applications2011年6月18日更新这里有一个有关系统、应用程序和库的列表,列表中的全部或者大部分代码用C++编写,当然,该列表并不全面。即使我如何努力,我也不能列举一个含有1000个主要由C++编写的程序列表,但是这里的列表可能包含我听说过程序之中的第1000个。这是一个包括系统、应用程序和库的列表,读者可能熟悉其中的一些,新手可能有个概念C++能做什么,或者我仅仅

  • TimeTrack_cycletime和takttime的区别

    TimeTrack_cycletime和takttime的区别使用TimerTask可以方便的实现定时任务的功能,但是如果使用不当,反而会带来隐患。在使用TimerTask时,TimerTask中的代码必须要做异常处理,否则产生异常的时候,就挂掉了。特别像使用MQ发送数据的时候,不会显式的要求你捕获异常,如果你忘记了,那么在某个时刻MQ异常的时候(比如网络异常),在发送数据到MQ失败的时候,TimerTask就挂掉了。比如如下代码:Appli…

  • winformlistview用法_listview控件的用法

    winformlistview用法_listview控件的用法Winform中的ListView排序是一种常用的功能,下面是例子代码,放上来留个备份using System;using System.Windows.Forms;using System.Drawing;using System.Collections;namespace ListViewSortFormNamespace…{     public class ListViewSo

  • JsonArray转换List

    JsonArray转换List将List转换为JsonArray:AppResponse<List<ProjectVo>>allProject=projectServiceFeign.findAllProject();//转jsonStringtoJSONString=JSON.toJSONString(allProject.getData());//保存到redis中,设置失效时间redisTemplate.opsForValue().set(“projectStr”,toJSONStr

  • Initialization failed for ‘https://start.spring.io’ Please check URL, network and proxy settings.

    Initialization failed for ‘https://start.spring.io’ Please check URL, network and proxy settings.

  • Linux(centos7)历史命令UP/DOWN自动补全

    Linux(centos7)历史命令UP/DOWN自动补全

发表回复

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

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