【qt】QListWidget 组件

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.rhkb.cn/news/329620.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

小微企业管理系统如何选择等保服务?

小微企业在选择等保&#xff08;信息安全等级保护&#xff09;服务时&#xff0c;应当考虑以下几个关键点以确保既能符合法规要求&#xff0c;又能在成本效益上做出合理决策&#xff1a; 了解等保需求&#xff1a;首先&#xff0c;小微企业需要了解自身的业务性质和信息系统的重…

30.包名的修改和新建后端模块

权限和第三方登录确实令人头疼,我们来学一点简单一点的。 另外,如果各位有属于自己的域名和ICP/IP备案,布置一个作业,自行实现第三方QQ登录。 我们所说的包名修改,是一次性修改ruoyi的全部包名,因为发现很多人有这样的需求,下载别人的代码,想要改成自己公司的包名,结…

深入Django项目实战与最佳实践

title: 深入Django项目实战与最佳实践 date: 2024/5/19 21:41:38 updated: 2024/5/19 21:41:38 categories: 后端开发 tags: Django 基础项目实战最佳实践数据库配置静态文件部署高级特性 第一章&#xff1a;Django项目架构与设计原则 Django框架概述 Django是一个高级的P…

上位机图像处理和嵌入式模块部署(mcu的按键输入)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 做技术的同学&#xff0c;大部分都会把精力放在技术本身&#xff0c;却忽视了学的东西有什么实际的用途。就拿gpio来说&#xff0c;一般我们点灯也…

递归的例子

例1&#xff1a;阶乘函数 #include<iostream> using namespace std; int f(int n) {if(n0)return 1;elsereturn f(n-1)*n; } int main() {int n;cin>>n;cout<<f(n);return 0; }例2&#xff1a;Fibonacci数列 无穷数列1&#xff0c;1&#xff0c;2&#xff0…

计算机-编程相关

在 Linux 中、一切都是文件、硬件设备是文件、管道是文件、网络套接字也是文件。 for https://juejin.cn/post/6844904103437582344 fork 进程的一些问题 fork 函数比较特殊、一次调用会返回两次。在父进程和子进程都会返回。 每个进程在内核中都是一个 taskstruct 结构、for…

Python函数进阶:四大高阶函数、匿名函数、枚举、拉链与递归详解

系列文章目录 Python数据类型&#xff1a;编程新手的必修课深入探索Python字符串&#xff1a;技巧、方法与实战Python 函数基础详解Python正则表达式详解&#xff1a;掌握文本匹配的魔法Python文件操作宝典&#xff1a;一步步教你玩转文件读写Python面向对象基础与魔法方法详解…

实验五:实现循环双链表各种基本运算的算法

实验五&#xff1a;实现循环双链表各种基本运算的算法 一、实验目的与要求 目的:领会循环双链表存储结构和掌握循环双链表中各种基本运算算法设计。 内容:编写一个程序cdinklist.cpp,实现循环双链表的各种基本运算和整体建表算法(假设循环双链表的元素类型ElemType为char),并…

【加密与解密(第四版)】第十七章笔记

第十七章 软件保护技术 17.1 防范算法求逆 17.2 抵御静态分析 反汇编算法&#xff1a;线性扫描&#xff08;无法正确地将代码和数据分开&#xff09;、递归进行 巧妙构造代码和数据&#xff0c;在指令流中插入很多“数据垃圾"&#xff0c;干扰反汇编软件的判断&#xf…

百度手机号登录iApp源码V3

本源码直接对接百度网页版登录接口&#xff0c;无需跳转第三方APP或者网页&#xff0c;可直接进行输入手机号获取验证码的步骤&#xff0c;登录后可获取到用户的UID&#xff0c;名称&#xff0c;BDUSS&#xff0c;PTOKEN&#xff0c;STOKEN&#xff0c;头像直链。 源码下载&…

若依nodejs版本过高问题解决方案

由于nodejs版本过高,可能会导致vue-cli项目运行报错。 目录 方法1:每次启动项目前,输入配置命令 方法2:修改package.js

docker 网络模式

四种模式介绍 宿主机可上网,容器内便可上网.且能ping通宿主机同网段服务 Docker网络模式 配置 说明 host模式 --nethost 容器和宿主机共享Network namespace。 container模式 --netcontainer:NAME_or_ID 容器和另外一个容器共享Network namespace。 kubernetes中的pod…

【DevOps】深入浅出:Jenkins 性能监控全解析

目录 一、监控指标&#xff1a;把握系统健康状况 1、资源利用率&#xff1a; 2、 任务执行效率&#xff1a; 3、系统稳定性&#xff1a; 二、监控工具&#xff1a;选择合适的利器 1、Jenkins 内置监控 1.1、Jenkins Performance Plugin&#xff1a;系统性能指标的直观展…

性能测试工具

性能测试工具 1.Jmeter 环境搭建1.安装JDK2.安装Jmeter1.下载2.安装3.环境配置 3.Jmeter 文件目录介绍1.bin目录2.docs 目录3.printable_docs目录4.lib目录 4.修改默认配置1.汉化配置2.修改主题 5.元件的基本介绍6.元件的作用域作用域的原则 7.元件的执行顺序 1.Jmeter 环境搭建…

登录安全分析报告:创蓝云智注册

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 暴力破解密码&#xff0c;造成用户信息泄露短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造成亏损无底洞…

ubuntu22.04下 easyconnect+输入法安装

先使用对应ubuntu版本的easyconnect安装 sudo dpkg -i EasyConnect_x64_7_6_7_3.deb 下载压缩包servicePack&#xff0c;并解压缩 cd 下载路径/servicePack sudo cp * /usr/share/sangfor/EasyConnect/ 打开easyConnect /usr/share/sangfor/EasyConnect/EasyConnect 此处…

Windows安全应急--反隐身术

NO.1 dir命令 首先做个演示&#xff0c;把演示01这个文件夹隐藏起来&#xff0c; 在文件夹上是看不到了&#xff0c; 我们可以使用dir命令查看&#xff0c; NO.2 文件夹选项–显示隐藏 这个是非常常规的了&#xff0c; 这里不做过多介绍 有些隐藏文件很顽固&#xff0c;上面…

mysql基础概念

一 基本操作 1 SQL分类 数据库&#xff1a;database 表&#xff1a;table&#xff0c;行&#xff1a;row 列&#xff1a;column 索引&#xff1a;index 视图&#xff1a;view 存储过程&#xff1a;procedure 存储函数&#xff1a;function 触发器&#xff1a;trigger 事…

使用HiBurn烧录鸿蒙.bin文件到Hi3861开发板

鸿蒙官方文档的“Hi3861开发板第一个示例程序”中描述了——如何使用DevEco Device Tool工具烧录二进制文件到Hi3861开发板&#xff1b; 本文将介绍如何使用HiBurn工具烧录鸿蒙的.bin文件到Hi3861开发板。 获取HiBurn工具 通过鸿蒙官方文档我们知道DevEco Device Tool是一个V…

Docker访问文件权限受限问题解决

问题描述 运行项目的docker环境&#xff0c;新添加了一个数据集&#xff0c;但是数据集的访问权限受限&#xff08;Permission dinied&#xff09;&#xff0c;运行的命令如图所示 问题解决 chmod 777 xxx YYDS&#xff01;&#xff01;&#xff01;但是单纯直接运行会因为权限…