【嵌入式——QT】QListWidget

QListWidget类提供了一个基于项的列表小部件,QListWidgetItem是列表中的项,该篇文章中涉及到的功能有添加列表项,插入列表项,删除列表项,清空列表,向上移动列表项,向下移动列表项。

常用API

  • addItem(const QString &label):添加项;
  • addItems(const QStringList &labels):添加集合项;
  • insertItem(int row, QListWidgetItem *item):插入项;
  • currentItem() const:当前项
  • currentRow() const:当前行;
  • item(int row) const:如果列表中给定行的元素被设置,则返回对应的元素;否则返回null;
  • row(const QListWidgetItem *item) const:返回包含给定项的行;
  • count() const:反列表中项目的数量;
  • takeItem(int row):移除项;

常用信号

  • void currentItemChanged(QListWidgetItem *current, QListWidgetItem *previous):每当当前元素发生变化时,就会发出这个信号;
  • void currentRowChanged(int currentRow):每当当前元素发生变化时,就会发出这个信号;
  • void currentTextChanged(const QString &currentText):每当当前元素发生变化时,就会发出这个信号;
  • void itemActivated(QListWidgetItem *item):当项目被激活时,这个信号就会发出。根据系统配置,当用户单击或双击该项目时,该项目将被激活;
  • void itemChanged(QListWidgetItem *item):每当item的数据发生变化时,就会发出这个信号;
  • void itemClicked(QListWidgetItem *item):当鼠标按钮单击部件中的某个项目时,该信号由指定的项目发出;
  • void itemDoubleClicked(QListWidgetItem *item):当鼠标按钮双击部件中的某个项目时,该信号由指定的项目发出;
  • void itemEntered(QListWidgetItem *item):当鼠标光标进入某个元素时,就会发出这个信号。项目就是输入的项目。这个信号只有在mouseTracking被打开,或者鼠标移动到某个元素时按下了鼠标按钮时才会发出;
  • void itemPressed(QListWidgetItem *item):当在部件中的某个项目上按下鼠标按钮时,该信号由指定的项目发出;
  • void itemSelectionChanged():每当选择发生变化时,就会发出这个信号;

图片示例
在这里插入图片描述
代码示例
QlistWidgetDialog.h

#ifndef QLISTWIDGETDIALOG_H
#define QLISTWIDGETDIALOG_H#include <QDialog>
#include <QListWidgetItem>
namespace Ui
{class QlistWidgetDialog;
}class QlistWidgetDialog : public QDialog
{Q_OBJECTpublic:explicit QlistWidgetDialog(QWidget* parent = nullptr);~QlistWidgetDialog();private slots:void on_pushButtonAdd_clicked();void on_pushButtonUp_clicked();void on_pushButtonDown_clicked();void on_pushButtonRemove_clicked();void on_pushButtonClear_clicked();void on_pushButtonInsert_clicked();void on_listWidget_currentRowChanged(int currentRow);void on_listWidget_currentItemChanged(QListWidgetItem* current, QListWidgetItem* previous);void on_listWidget_currentTextChanged(const QString& currentText);void on_listWidget_customContextMenuRequested(const QPoint& pos);private:Ui::QlistWidgetDialog* ui;};#endif // QLISTWIDGETDIALOG_H

QlistWidgetDialog.cpp

#include "QlistWidgetDialog.h"
#include "ui_QlistWidgetDialog.h"
#include <QListWidgetItem>>
#include <QDebug>
#include <QMenu>
QlistWidgetDialog::QlistWidgetDialog(QWidget* parent): QDialog(parent), ui(new Ui::QlistWidgetDialog)
{ui->setupUi(this);//listWidget属性设置为自定义菜单 才可以鼠标右键自定义右键菜单ui->listWidget->setContextMenuPolicy(Qt::CustomContextMenu);
}QlistWidgetDialog::~QlistWidgetDialog()
{delete ui;
}void QlistWidgetDialog::on_pushButtonAdd_clicked()
{QString text = ui->lineEdit->text();QListWidgetItem* item = new QListWidgetItem(text);// 可编辑item->setFlags(Qt::ItemIsEditable | Qt::ItemIsEnabled);ui->listWidget->addItem(item);
}void QlistWidgetDialog::on_pushButtonUp_clicked()
{QListWidgetItem* selectItem = ui->listWidget->currentItem();int curRow = ui->listWidget->row(selectItem);if(curRow > 0) {ui->listWidget->takeItem(curRow);ui->listWidget->insertItem(curRow - 1, selectItem);ui->listWidget->setCurrentItem(selectItem);}
}void QlistWidgetDialog::on_pushButtonDown_clicked()
{QListWidgetItem* selectItem = ui->listWidget->currentItem();int curRow = ui->listWidget->row(selectItem);if(curRow < ui->listWidget->count() - 1) {//移除当前行号的itemui->listWidget->takeItem(curRow);//在curRow+1位置插入选中的itemui->listWidget->insertItem(curRow + 1, selectItem);//设置选中的item为当前itemui->listWidget->setCurrentItem(selectItem);}
}void QlistWidgetDialog::on_pushButtonRemove_clicked()
{int row = ui->listWidget->currentRow();//移除项QListWidgetItem* dItem = ui->listWidget->takeItem(row);//删除对象delete dItem;
}void QlistWidgetDialog::on_pushButtonClear_clicked()
{ui->listWidget->clear();
}void QlistWidgetDialog::on_pushButtonInsert_clicked()
{QString text = ui->lineEdit->text();int curRow = ui->listWidget->currentRow();QListWidgetItem* newItem = new QListWidgetItem(text);ui->listWidget->insertItem(curRow, newItem);
}void QlistWidgetDialog::on_listWidget_currentRowChanged(int currentRow)
{qDebug()<<"currentRow"<<currentRow;
}void QlistWidgetDialog::on_listWidget_currentItemChanged(QListWidgetItem* current, QListWidgetItem* previous)
{// QString curText = current->text();// QString preText = previous->text();// qDebug()<<"curText"<<curText<<"preText"<<preText;
}void QlistWidgetDialog::on_listWidget_currentTextChanged(const QString& currentText)
{qDebug()<<"currentText"<<currentText;
}//鼠标右键
void QlistWidgetDialog::on_listWidget_customContextMenuRequested(const QPoint& pos)
{Q_UNUSED(pos);QMenu* menu = new QMenu(this);QAction* act1 = new  QAction("act1");QAction* act2 = new  QAction("act2");QAction* act3 = new  QAction("act3");QAction* act4 = new  QAction("act4");menu->addAction(act1);menu->addAction(act2);menu->addAction(act3);menu->addAction(act4);menu->exec(QCursor::pos());//在鼠标光标位置显示右键快捷菜单delete menu;
}

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

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

相关文章

python接口自动化(一)--什么是接口、接口优势、类型(详解)

简介 经常听别人说接口测试&#xff0c;接口测试自动化&#xff0c;但是你对接口&#xff0c;有多少了解和认识&#xff0c;知道什么是接口吗&#xff1f;它是用来做什么的&#xff0c;测试时候要注意什么&#xff1f;坦白的说&#xff0c;笔者之前也不是很清楚。接下来先看一下…

鬼屋游戏c++

c #include <iostream> #include <string> #include <vector> #include <cstdlib> // 用于随机数生成 #include <ctime> // 用于随机数种子using namespace std;// 定义房间结构体 struct Room {string description;bool hasKey;bool hasClue…

基于yolov5的电瓶车和自行车检测系统,可进行图像目标检测,也可进行视屏和摄像检测(pytorch框架)【python源码+UI界面+功能源码详解】

功能演示&#xff1a; 基于yolov5的电瓶车和自行车检测系统_哔哩哔哩_bilibili &#xff08;一&#xff09;简介 基于yolov5的电瓶车和自行车检测系统是在pytorch框架下实现的&#xff0c;这是一个完整的项目&#xff0c;包括代码&#xff0c;数据集&#xff0c;训练好的模型…

YOLOv9:Learning What You Want to Learn Using Programmable Gradient Information

YOLOv9&#xff1a;Learning What You Want to Learn Using Programmable Gradient Information 摘要 今天的深度学习方法关注的是如何设计最合适的目标函数&#xff0c;使模型的预测结果最接近ground truth的真实情况。同时&#xff0c;必须设计一个适当的体系结构&#xff…

WebServer -- 注册登录

目录 &#x1f349;整体内容 &#x1f33c;流程图 &#x1f382;载入数据库表 提取用户名和密码 &#x1f6a9;同步线程登录注册 补充解释 代码 &#x1f618;页面跳转 补充解释 代码 &#x1f349;整体内容 概述 TinyWebServer 中&#xff0c;使用数据库连接池实现…

实用干货:分享一款全能且免费的画图神器!

大家好&#xff0c;我是大澈&#xff01; 本文约700字&#xff0c;整篇阅读大约需要1分钟。 关注微信公众号&#xff1a;“程序员大澈”&#xff0c;免费领取"面试礼包"&#xff0c;免费加入问答群&#xff0c;一起交流技术难题与未来&#xff01; 1. 干货速览 作…

2024-02学习笔记

1.当我们向Set集合中添加一个已经存在的元素时 当我们向Set集合中添加一个已经存在的元素时&#xff0c;Set集合会如何处理呢&#xff1f;实际上&#xff0c;Set集合不会将重复的元素添加到集合中。当我们向Set集合中添加一个元素时&#xff0c;Set集合会首先判断该元素是否已…

【CSS】CSS简介,CSS基础选择器详解

目录 css简介 css语法规范 css代码风格&#xff1a; css选择器的作用 css基础选择器 标签选择器 类选择器 类选择器---多类名 id选择器 id选择器和类选择器的区别&#xff1a; 通配符选择器 总结 ⭐css简介 CSS 是层叠样式表 ( Cascading Style Sheets ) 的简称,也…

cAdvisor+Prometheus+Grafana 搞定Docker容器监控平台

cAdvisorPrometheusGrafana cAdvisorPrometheusGrafana 搞定Docker容器监控平台1、先给虚拟机上传cadvisor2、What is Prometheus?2.1、架构图 3、利用docker安装普罗米修斯4、安装grafana cAdvisorPrometheusGrafana 搞定Docker容器监控平台 1、先给虚拟机上传cadvisor cAd…

Revit-二开之东西南北立面FilledRegion的CurveLoop计算-(4)

东西南北FilledRegion的CurveLoop计算 上一篇以东立面视图为例创建FilledRegion,接下来我们将立面视图创建FilledRegion的CurveLoop汇总一下。 上图是对四个立面坐标系间的绘制方便我们计算FilledRegion的CurveLoop。 东立面CurveLoop计算 private CurveLoop GetEastCurveL…

[计算机网络]--五种IO模型和select

前言 作者&#xff1a;小蜗牛向前冲 名言&#xff1a;我可以接受失败&#xff0c;但我不能接受放弃 如果觉的博主的文章还不错的话&#xff0c;还请点赞&#xff0c;收藏&#xff0c;关注&#x1f440;支持博主。如果发现有问题的地方欢迎❀大家在评论区指正 目录 一、五种IO…