QT之QListWidget的介绍

2023-09-18 18:42:07

1、成员函数介绍

1)QListWidget(QWidget *parent = nullptr)
构造函数,创建一个新的QListWidget对象。

2)void addItem(const QString &label)
在列表末尾添加一个项目,项目标签为label。

3)void addItem(QListWidgetItem *item)
在列表末尾添加一个项目,项目为item。

4)void insertItem(int row, const QString &label)
在指定的行插入一个项目,项目标签为label。

5)void insertItem(int row, QListWidgetItem *item)
在指定的行插入一个项目,项目为item。

6)void removeItemWidget(QWidget *widget)
从列表中移除指定的widget。

7)int rowCount() const
返回列表中的行数。

8)QListWidgetItem *item(int row) const
返回指定行的项目。

9)QListWidgetItem *takeItem(int row)
移除并返回指定行的项目。

10)int currentRow() const
返回当前选中的行的索引。

11)void setCurrentRow(int row)
设置当前选中的行。

12)QListWidgetItem *currentItem() const
返回当前选中的项目。

13)void setCurrentItem(QListWidgetItem *item)
设置当前选中的项目。

14)void sortItems(Qt::SortOrder order = Qt::AscendingOrder)
按照指定的顺序对列表中的项目进行排序。

15)void clear()
移除列表中的所有项目。

16)void setSelectionMode(QAbstractItemView::SelectionMode mode)
设置列表的选择模式。

17)QAbstractItemView::SelectionMode selectionMode() const
返回列表的当前选择模式。

注意,对于大部分函数来说,如果列表为空或者索引超出范围,它们将不会有任何效果。此外,对列表的更改可能会触发一些信号,如itemChanged、itemClicked等,你可以通过连接这些信号来响应用户的交互。

2、例子

显示图片和按钮的例子

QListWidget中显示图片和按钮,你需要创建自定义的列表项。QListWidget本身并不直接支持这种功能,但是你可以通过创建自定义的QWidget,然后将它们添加到QListWidget中来实现。

#include <QApplication>  
#include <QListWidget>  
#include <QListWidgetItem>  
#include <QPushButton>  
#include <QLabel>  
#include <QHBoxLayout>  
#include <QWidget>  
#include <QVBoxLayout>  
#include <QPixmap>  
  
class CustomItem : public QWidget {  
public:  
    CustomItem(const QString& text, const QPixmap& pixmap, QWidget* parent = nullptr)   
        : QWidget(parent), textLabel(new QLabel(text, this)), pixmapLabel(new QLabel(this)), button(new QPushButton("Button", this)) {  
        QHBoxLayout* layout = new QHBoxLayout(this);  
        layout->addWidget(textLabel);  
        layout->addWidget(pixmapLabel);  
        layout->addWidget(button);  
        setLayout(layout);  
        pixmapLabel->setPixmap(pixmap);  
    }  
  
private:  
    QLabel* textLabel;  
    QLabel* pixmapLabel;  
    QPushButton* button;  
};  
  
int main(int argc, char *argv[])  
{  
    QApplication app(argc, argv);  
    QListWidget listWidget;  
    QPixmap pixmap("path_to_your_image.jpg"); // Replace with the actual path to your image.  
    listWidget.addItem(new QListWidgetItem(new CustomItem("Item 1", pixmap)));  
    listWidget.addItem(new QListWidgetItem(new CustomItem("Item 2", pixmap)));  
    listWidget.addItem(new QListWidgetItem(new CustomItem("Item 3", pixmap)));  
    listWidget.show();  
    return app.exec();  
}

在这个例子中,我创建了一个名为CustomItem的自定义QWidget类,它包含一个QLabel用于显示文本,一个QLabel用于显示图片,以及一个QPushButton。然后,我创建了一个QListWidget,并使用这个自定义的部件创建了三个列表项。

更多推荐

网络安全(黑客)自学

前言一、什么是网络安全网络安全可以基于攻击和防御视角来分类,我们经常听到的“红队”、“渗透测试”等就是研究攻击技术,而“蓝队”、“安全运营”、“安全运维”则研究防御技术。无论网络、Web、移动、桌面、云等哪个领域,都有攻与防两面性,例如Web安全技术,既有Web渗透,也有Web防御技术(WAF)。作为一个合格的网络安全

Spring WebSocket 认证与授权:掌控安全通道,迈向巅峰之旅!

一、需要了解的事项http和WebSocket的安全链和安全配置是完全独立的。SpringAuthenticationProvider根本不参与Websocket身份验证。将要给出的示例中,身份验证不会发生在HTTP协商端点上,因为JavaScriptSTOMP(websocket)库不会随HTTP请求一起发送必要的身

ARM DAY3

硬件模块与总线连接:各种硬件模块(如GPIO控制器)与CPU(或内核)通过总线进行连接。这个总线负责数据和指令的传输。特殊功能寄存器(SFRs)的角色:每个硬件模块内部都有一组特殊功能寄存器(SFRs)。这些寄存器是硬件模块的一部分,用于存储该模块的当前状态和配置信息。它们在特定的内存地址中有其对应的位置。使用LDR读

华为MTL流程的六个模块初步解析

大家好!昨天华研荟给大家介绍了华为MTL流程的基本概念和发展历程,今天我们来了解下华为MTL流程的六个模块。如昨天所述,华为的MLT流程主要有六个模块:市场洞察、市场管理、联合创新、销售赋能、激发需求、营销质量管理。接下来,我们来了解这六个模块。1.市场洞察在这里指的是通过观察和分析市场动态,了解市场趋势、需求和竞争环

【Android】线程下载资源保证资源到位采用了 OkHttp的三方网络下载 & 文件缓存策略

背景使用SVGA的三方的url播放方式会比较慢,至少延迟3s以上才会出现svga效果,所以改变策略:将线上的svga全部下载到本地进行播放,那么就得将采用网络缓存的方式实现效果。实现那么就得实现以下几点:初次下载缓存判重下载下载的地址就放在这里。这里也是常规的文件路径下载通过上下文类获取即可,如果参数路径没有,就会再构

ETHERCAT转MODBUS TCP/IP协议网关

产品介绍JM-ECT-TCPIP是自主研发的一款EtherCAT从站功能的通讯网关。该产品主要功能是将EtherCAT网络和TCP/IP网络连接起来。本网关连接到EtherCAT总线中做为从站使用,连接到TCP/IP网络中做为服务器或客户端使用。产品参数技术参数u网关做为EtherCAT网络的从站,可以连接倍福、欧姆龙

ASIC-WORLD Verilog(11)过程时序控制

写在前面在自己准备写一些简单的verilog教程之前,参考了许多资料----Asic-World网站的这套verilog教程即是其一。这套教程写得极好,奈何没有中文,在下只好斗胆翻译过来(加了自己的理解)分享给大家。这是网站原文:VerilogTutorial这是系列导航:Verilog教程系列文章导航过程块和时序控制

深入浅出学Verilog--基础语法

1、简介Verilog的语法和C语言非常类似,相对来说还是非常好学的。和C语言一样,Verilog语句也是由一连串的令牌(Token)组成。1个令牌必须由1个或1个以上的字符(character)组成,令牌可以是:注释(Comment)空白符(Whitespace)运算符(Operator)数字(Number)字符串(

新手如何学习RPA,怎么学,从哪下手,学习资源哪里来?

随着人工智能技术的迅速发展,RPA(RoboticProcessAutomation)已经成为企业自动化流程的一个重要工具。越来越多的新手开始学习RPA技术,以便在职场中获得更多的竞争优势。本文将介绍新手如何学习RPA,从哪里开始学习,以及有哪些学习资源可以利用。一、了解RPA基础知识学习RPA的第一步是了解其基础知识

S7通信协议的挑高点

目录1.S7协议之布尔操作2.S7协议之PDU读取3S7协议之多组读取在电气学习的路上,西门子PLC应该是每个人的启蒙PLC,从早期的S7-300/400PLC搭建Profibus-DP网络开始接触,到后来的S7-200SmartPLC,再到现在的S7-1200/1500PLC博途软件。西门子S7协议是非常强大的一个协

面向对象的分析与设计(精品课程)第一章作业

面向对象的分析与设计(精品课程)第一章作业一.单选题(共2题,18分)二.多选题(共3题,27分)三.填空题(共5题,45分)四.简答题(共1题,10分)一.单选题(共2题,18分)(单选题)如果想对一个类的意义进行描述,那么应该采用()。A标记值B规格描述C注释D构造型(单选题)()模型的缺点是缺乏灵活性,特别是无法

热文推荐