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)
blank

相关推荐

  • 文件读取(FileInputStream 读取本地文件)

    文件读取(FileInputStream 读取本地文件)使用FileInputStream读取本地文件(图片、视频、音乐、文档资料)二进制文件、文本文件1.在物理存储上上没有什么区别,存在硬盘上都是以二进制方式存储2.解释数据的逻辑不同,程序读取文本文件,可以以字符方式读取,也可以以字节读取,将读取的数据解释为ASCII或者unicode编码;当程序读取二进制文件,以字节方式读取,对读取数据的解释由读取数据而定,如读取图片时,需要了解文件的结…

  • Typeorm_Type-C

    Typeorm_Type-CTypeORM是一个ORM (opensnewwindow)框架,它可以运行在NodeJS、Browser、Cordova、PhoneGap、Ionic、ReactNative、E

  • linux的软连接命令_linux软连接怎么用

    linux的软连接命令_linux软连接怎么用Linux命令之软连接详解。结合示例详细说明软链接的创建,同时给出如何正确删除一个软链接。

  • 大型视频监控存储方式_私人云存储解决方案

    大型视频监控存储方式_私人云存储解决方案一、背景描述在建设和谐社会的环境下,国家对很多单位的视频监控系统提出了更高的要求,要求他们把视频监控录像保存更长的时间,要求视频监控的画面更加清晰一点;这些要求的提出,导致原有视频监控系统的存储空间不能满足最新的需求,需要一个更大的存储空间来保存视频录像,如何给原有的监控系统进行存储空间的扩容,以及如何满足将来进一步扩容的需求,正在成为系统集成商和客户的难题。AXUS公司针对中国市场进行了一…

  • vue中使用定时器setInterval

    vue中使用定时器setIntervalvue中使用定时器setIntervalthis.timer=setInterval(this.fetchData,1000);clearInterval(this.timer);beforeDestroy(){clearInterval(this.timer);},

    2022年10月30日
  • jmespath(2)投影Projections「建议收藏」

    jmespath(2)投影Projections「建议收藏」投影投影是JMESPath的关键特性之一。它允许您将表达式应用于元素集合。有五种投影:列表投影切片投影对象投影展平投影过滤投影处理投影需要注意的点投影分为两个步骤。左侧(LHS)创建一

发表回复

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

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