【qt】QListWidget 组件

news2024/11/13 14:31:07

QListWidget 组件

  • 一.QListWidget的用途
  • 二.界面设计
  • 三.QListWidget的添加
    • 1.界面添加
    • 2.代码添加
  • 四.列表项的设置
    • 1.文本
    • 2.图标
    • 3.复选框
    • 4.列表大小
  • 五.字体和图标的设置
    • 1.字体:
    • 2.图标:
  • 六.设置显示模式
    • 1.图标
    • 2.列表
  • 七.其他功能实现
    • 1.删除
    • 2.全选
    • 3.反选
    • 4.add添加
  • 八.右键快捷菜单
    • 1.自定义菜单设置
    • 2.转到槽
    • 3.创建菜单
    • 4.添加菜单项
    • 7.显示菜单
    • 8.删除菜单
  • 九.工具按钮
    • 1.拖拉工具按钮
    • 2.添加菜单
    • 3.弹出方式
    • 4.默认子菜单
    • 5.显示样式
  • 十.总结

一.QListWidget的用途

QListWidget 是一个用于显示列表项的组件,每个列表项通常由一个图标和一个文本组成。用户可以通过单击或选择列表项来与其进行交互

二.界面设计

我们还是来跟着项目来一起做,边做边学边快来!
目标图:
在这里插入图片描述
首先添加素材,需要的可以dd我。
然后需要用到 action 前面有讲过,不懂的可以去看界面设计哪里
在这里插入图片描述
工具栏这个地方可以调图标大小:
在这里插入图片描述

还需要用到QListWidget组件
不用状态栏的话,可以将其删除
接着就是一些布局。
在这里插入图片描述

三.QListWidget的添加

1.界面添加

双击ListWidget即可添加:
在这里插入图片描述

2.代码添加

这个是大头,来吧我们开始吧,先定义一个initUI的函数,记得姚在窗口的构造函数中调用哦。
因为用代码进行添加时姚用到列表项,所有我们要先来设置一下列表项。

四.列表项的设置

1.文本

QListWidgeItem就是列表项,我们可以对其添加文本
然后就可以添加到我们的ListWidget

void MainWindow::initUI()
{
    QStringList list={"语文","美术","体育","音乐","地球物理学","数学","英语"};
    for(int i=0;i<list.count();i++)
    {
        QListWidgetItem *item=new QListWidgetItem;//列表项
        item->setText(list[i]);
        ui->listWidget->addItem(item);
    }

}

运行结果:
在这里插入图片描述
对了,可以把我们刚刚添加的恋爱课程去掉;

void MainWindow::initUI()
{
    ui->listWidget->clear();//可以清空
    QStringList list={"语文","美术","体育","音乐","地球物理学","数学","英语"};
    for(int i=0;i<list.count();i++)
    {
        QListWidgetItem *item=new QListWidgetItem;//列表项
        item->setText(list[i]);
        ui->listWidget->addItem(item);
    }
}

就一行代码,运行结果:
在这里插入图片描述

2.图标

现在我们来添加灵魂就是图标。

void MainWindow::initUI()
{
    ui->listWidget->clear();//可以清空
    QStringList list={"语文","美术","体育","音乐","地球物理学","数学","英语"};

    QIcon icon;
    icon.addFile(":/images/image/class.png");//设置图标到图标变量icon中

    for(int i=0;i<list.count();i++)
    {
        QListWidgetItem *item=new QListWidgetItem;//列表项
        item->setText(list[i]);
        item->setIcon(icon);//添加图标
        ui->listWidget->addItem(item);
    }
}

运行结果:
在这里插入图片描述

3.复选框

item->setCheckState(Qt::Unchecked);//设置未勾选的复选框

运行结果:
在这里插入图片描述

4.列表大小

还可以对列表项的大小进行设置

item->setSizeHint(QSize(200,80));

在这里插入图片描述

五.字体和图标的设置

1.字体:

对于ListWidget里面列表项的字体,我们可以继续设置。

    QFont font=ui->listWidget->font();
    font.setPointSize(30);
    ui->listWidget->setFont(font);

运行结果:
在这里插入图片描述

2.图标:

图标的大小我们同样可以通过listWidget来进行设置。

ui->listWidget->setIconSize(QSize(40,40));

运行结果:
在这里插入图片描述

六.设置显示模式

1.图标

对图标模式用action转到槽

void MainWindow::on_actionIconMode_triggered()
{
    ui->listWidget->setViewMode(QListView::IconMode);//设置为图标模式
}

运行结果:
在这里插入图片描述
但是感觉上下帖的好紧,我们可以用setSpacing来进行留白

ui->listWidget->setSpacing(20);//对四周都会产生留白效果

运行结果:
在这里插入图片描述
现在还有一个问题就是当我们缩小框的时候,列表项不能够自适应
就是这样:
在这里插入图片描述
解决方案:

ui->listWidget->setResizeMode(QListView::Adjust);//可以自适应窗口大小

运行结果:
在这里插入图片描述

2.列表

对列表模式action用转到槽:

void MainWindow::on_actionListMode_triggered()
{
    ui->listWidget->setViewMode(QListView::ListMode);//设置为列表模式
    //ui->listWidget->setSpacing(10);对四周都会产生留白效果
}

运行结果:
在这里插入图片描述

七.其他功能实现

1.删除

void MainWindow::on_actionDelete_triggered()
{
    int count=ui->listWidget->count();//先拿列表项的个数
    for(int i=count-1;i>=0;i--)//从后往前删,不然索引会错误
    {
        //如果列表项的复选框选中就进行删除
        if(ui->listWidget->item(i)->checkState()==Qt::Checked)
        {
            auto item=ui->listWidget->takeItem(i);//删除会返回这个值的指针,但是内存没有真正的删除
            delete item;
        }
    }
}

数学英语被我删了,运行结果:

在这里插入图片描述

2.全选

item可以拿到列表项,然后进行设置

void MainWindow::on_actionSelectAll_triggered()
{
    int count=ui->listWidget->count();
    for(int i=0;i<count;i++)
    {
        ui->listWidget->item(i)->setCheckState(Qt::Checked);
    }
}

运行结果:
在这里插入图片描述

3.反选

先用item拿到列表项
然后检查复选框的状态,然后进行相反的设置。

void MainWindow::on_actionFan_triggered()
{
    int count=ui->listWidget->count();
    for(int i=0;i<count;i++)
    {
        auto item=ui->listWidget->item(i);
        if(item->checkState()==Qt::Checked)
        {
            ui->listWidget->item(i)->setCheckState(Qt::Unchecked);
        }
        else
        {
            ui->listWidget->item(i)->setCheckState(Qt::Checked);
        }
    }
}

运行结果:
在这里插入图片描述

4.add添加

对按钮进行转到槽,然后检查文本框是否为空
trimmed可以排除收尾的空格,避免输入无效空格

void MainWindow::on_pushButton_clicked()
{
    //如果文本不为空
    if(ui->lineEdit->text().trimmed().length()>0)
    {
        QListWidgetItem *item=new QListWidgetItem;
        item->setText(ui->lineEdit->text().trimmed());
        QIcon icon;
        icon.addFile(":/images/image/class.png");
        item->setIcon(icon);
        item->setCheckState(Qt::Unchecked);
        ui->listWidget->addItem(item);
    }

}

运行结果:
在这里插入图片描述

八.右键快捷菜单

1.自定义菜单设置

 ui->listWidget->setContextMenuPolicy(Qt::CustomContextMenu);//可以自定义菜单

将上下文菜单策略设置为自定义菜单策略。在这种策略下,当用户在该部件上右击时,不会自动弹出默认的上下文菜单,而是需要手动编写代码来定义自己的上下文菜单。

2.转到槽

选择这个信号
在这里插入图片描述

3.创建菜单

QMenu *menu=new QMenu(this);

4.添加菜单项

    menu->addAction(ui->actionIconMode);
    menu->addAction(ui->actionListMode);
    menu->addSeparator();//添加分割线
    menu->addAction(ui->actionDelete);

7.显示菜单

menu->exec(QCursor::pos());

8.删除菜单

 delete menu;

总的:

void MainWindow::on_listWidget_customContextMenuRequested(const QPoint &pos)
{
    
    menu->addAction(ui->actionIconMode);
    menu->addAction(ui->actionListMode);
    menu->addSeparator();//添加分割线
    menu->addAction(ui->actionDelete);
    menu->exec(QCursor::pos());
    delete menu;
}

运行结果:
在这里插入图片描述

九.工具按钮

1.拖拉工具按钮

在这里插入图片描述

2.添加菜单

    QMenu *menu=new QMenu;
    menu->addAction(ui->actionIconMode);
    menu->addAction(ui->actionListMode);
    menu->addAction(ui->actionDelete);
    ui->toolButtonMenu->setMenu(menu);

3.弹出方式

 ui->toolButtonMenu->setPopupMode(QToolButton::InstantPopup);

4.默认子菜单

ui->toolButtonMenu->setDefaultAction(ui->actionIconMode);

5.显示样式

ui->toolButtonMenu->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);

运行结果:
在这里插入图片描述

十.总结

对于QListWidget的组件,我们最重要的一点是往里面添加的是列表项ListWidgetItem,这又是一种类型。
因此我们要注意那些接口是用在列表项的,那些是用在列表的。

冰冻三尺,非一日之寒

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1685791.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

服务高峰期gc,导致服务不可用

随着应用程序的复杂性和负载的不断增加&#xff0c;对JVM进行调优&#xff0c;也是保障系统稳定性的一个重要方向。 需要注意&#xff0c;调优并非首选方案&#xff0c;一般来说解决性能问题还是要从应用程序本身入手&#xff08;业务日志&#xff0c;慢请求等&#xff09;&am…

今日刷三题(day13):变态跳台阶+包含不超过两种字符的最长字串+字符串的排列

题目一&#xff1a;变态跳台阶 题目描述&#xff1a; 一只青蛙一次可以跳上1级台阶&#xff0c;也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶(n为正整数)总共有多少种跳法。 输入输出描述&#xff1a; 输入&#xff1a;3 输出&#xff1a;…

SAPUI5基础知识2 - 手动创建一个SAPUI5的项目

1. 前言 在本篇文章中&#xff0c;我们将手动一步一步建立出第一个SAPUI5的 ‘Hello World!’ 项目。 2. 步骤详解 2.1 在BAS中建立Dev Space 进入SAP Business Application Studio的Dev Space Manger&#xff0c;选择创建Dev Space。 勾选HTML5 Application Template插件…

C++进阶之路:何为运算符重载、赋值运算符重载与前后置++重载(类与对象_中篇)

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢&#xff0c;在这里我会分享我的知识和经验。&am…

由于删除、修改、重装QT库引起的软件问题@FreeBSD

由于由于删除、修改、重装QT库以及snappy库等&#xff0c;导致很多软件出现了异常&#xff0c;即无法启动&#xff0c;逐个解决问题。 qutebrowser浏览器 报错&#xff1a; qutebrowser报错 No backend library found qutebrowser needs QtWebKit or QtWebEngine, but neith…

Ollama本地运行 Mistral-7B-Instruct-v0.3

Ollama本地运行 Mistral-7B-Instruct-v0.3 0. 引言1. 运行 mistral:7b-instruct-v0.3-q8_02. 简单问个问题 0. 引言 Mixtral 5月23日发布了 Mistral-7B-Instruct-v0.3&#xff0c;支持 function calling&#xff0c;今天简单运行一下。 1. 运行 mistral:7b-instruct-v0.3-q8_…

人类听觉处理和语言中枢

人类听觉概述 人类听觉是指通过耳朵接收声音并将其转化为神经信号&#xff0c;从而使我们能够感知和理解声音信息的能力。听觉是人类五种感觉之一&#xff0c;对我们的日常生活和交流至关重要。 听觉是人类交流和沟通的重要工具。通过听觉&#xff0c;我们能够听到他人的语言…

蓝牙(2):BR/EDR的连接过程;查询(发现)=》寻呼(连接)=》安全建立=》认证=》pair成功;类比WiFi连接过程。

4.2.1 BR/EDR 流程&#xff1a; 查询&#xff08;发现&#xff09;》寻呼&#xff08;连接&#xff09;》安全建立》认证》pair成功 4.2.1.1 查询&#xff08;发现&#xff09;流程Inquiry (discovering) 类比WiFi的probe request/response 蓝牙设备使用查询流程来发现附近的…

Python下载安装图文教程,Pycharm下载安装图文教程

Python及Pycharm安装图文教程&#xff0c;供大家参考&#xff0c;具体内容如下 为了学习Python我今天对它进行了安装&#xff0c;并将Python及Pycharm安装方法进行了分享&#xff0c;希望可以帮助到大家 注&#xff1a;建议大家在安装过程中不要将软件安装到系统盘中。 1、P…

汽车展厅应用客流统计,洞察客户规律,完成热门车型分析

在汽车展厅中&#xff0c;客流统计正逐渐成为一项不可或缺的重要工具&#xff0c;它帮助我们洞察客户规律&#xff0c;从而能够更好地完成热门车型分析。 一、客流统计-客户画像分析 客流统计下的客户画像构建为我们提供了深入了解客户的途径。通过对进入展厅的人群进行细致分析…

列表页9大样式,保准你看了就能掌握。

上文&#xff1a;一张图集齐B端列表页的16大组件&#xff0c;召唤神龙&#xff0c;看后恍然大悟。 普通列表/基础列表/常规列表 不适合移动端展示 复杂列表 加入了统计 适合移动端 项目列表 适合移动端 应用列表 适合移动端 多级列表 复杂的多级结构&#xff0c;下图展示了…

SpringBoot项目热部署-解决html修改后需要重启项目的问题

前言&#xff1a;启动热部署之后修改html无需再次重启项目&#xff0c;每次都要重新重启项目 2022IDEA以下版本 1、打开file->Settings->Compiler,勾选Build project automatically 2、按住ctrlshiftalt/ 选Registry进去吧app.running的勾打上、 2022IDEA及以上

弘君资本股市技巧:限售股解禁对市场有何影响?

限售股解禁意味着本来不能在商场上自由生意的股票能够进入二级商场流通了&#xff0c;限售股解禁往往会引起投资者们的高度关注。关于限售股解禁对商场有何影响&#xff0c;弘君资本下面就为大家具体介绍一下。 限售股解禁的影响&#xff1a; 1、股价跌落压力增大。当限售股解…

【三剑客和正则表达式】

文章目录 学习目标一、什么是三剑客1.三剑客grep2.三剑客sed3.三剑客awk4.正则过滤例子15.正则过滤例子2 总结 学习目标 1.学会使用 grep 2.学会使用 sed 3.学会使用 awk 4.学会使用正则表达式一、什么是三剑客 正则三剑客&#xff1a;grep sed awk 1.三剑客grep # 擅长过滤…

到底什么是数字?

来源&#xff1a;Bulletins from the Wolfram Physics Project 一、说明 数字这个概念是最普遍而又最难把控的概念。对数字概念的深度解读&#xff0c;决定人类社会方方面面的整体水平。而且&#xff0c;随着宇宙知识的认识&#xff0c;数字概念也似乎在膨胀中。 外星人乘坐星际…

快速搭建 WordPress 外贸电商网站指南

本指南全面解析了在 Hostinger 平台上部署 WordPress 外贸电商网站的详细步骤&#xff0c;涵盖托管方案选择、WordPress 一键安装、主题挑选与演示数据导入、主题个性化定制、SEO插件插件 AIOSEO 安装、通过 GTranslate 实现多语言自动翻译、地区访问控制插件&#xff0c;助力用…

在 Ubuntu Server 22.04 上安装和配置 Kubectl

在 Ubuntu Server 22.04 上安装和配置 Kubectl 如何在 Ubuntu Server 22.04 上安装和配置 Kubectl&#xff0c;以便管理 Kubernetes 集群。 前提条件 在开始之前&#xff0c;请确保您已满足以下要求&#xff1a; 已安装 Ubuntu Server 22.04已安装 Kubernetes 集群拥有集群…

Linux应用入门(二)

1. 输入系统应用编程 1.1 输入系统介绍 常见的输入设备有键盘、鼠标、遥控杆、书写板、触摸屏等。用户经过这些输入设备与Linux系统进行数据交换。这些设备种类繁多&#xff0c;如何去统一它们的接口&#xff0c;Linux为了统一管理这些输入设备实现了一套能兼容所有输入设备的…

基于若依的旅游推荐管理系统(spring boot+vue+mybatis+Ajax)

目录 一、项目目的 二、项目需求 1、功能模块分析 2、数据库表er图 三、部分界面展示 1、景点信息 2、旅游路线 3、地方美食管理 四、新颖点 1、旅游路线、景点和美食的联系 2、联系实现 3、地级选择器&#xff08;省市二级&#xff09; 五、总结 一、项目目的 随着…

如何轻松访问 Android 手机和平板电脑上的内部存储

概括 在数字设备领域&#xff0c;我们的智能手机充当虚拟金库&#xff0c;在其范围内存储个人数据、珍贵记忆和重要信息的宝库。因此&#xff0c;我们将指导您如何访问 Android 上的内部存储&#xff0c;确保您可以安全、轻松地检查内部文件系统并管理文件。同时&#xff0c;您…