Qt学习笔记 ListWidget的增删改
时间:2022-04-25
本文章向大家介绍Qt学习笔记 ListWidget的增删改,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
学习了一下ListWidget控件的使用,做一个小功能增删改
先把代码分解最后给出完整代码
在窗体上添加一个ListWidget 一个Horizontal Specer和 三个PushButton
效果如下
因为构造函数中的SetupUi(this)会自动将符合on_objectName_signalName()命名
的任意槽与相应的objectName的signalName()信号连接到一起
我就直接在.h文件里添加槽的声明
private slots:
void on_btn_AddEvent_clicked();
void on_btn_Del_clicked();
void on_btn_Modify_clicked();
void on_lvWid_Source_currentItemChanged(QListWidgetItem *current, QListWidgetItem *previous);
先在给ListWidget控件添加一些元素
MyElementsView::MyElementsView(QWidget *parent) :
QDialog(parent),
ui(new Ui::MyElementsView)
{
ui->setupUi(this);
for(int i=0;i<5;i++)
{
ui->lvWid_Source->addItem(tr("item : ") + QString::number(i));
}
}
这样ListWidget就有5个元素了
我们再看一下它的curretnItemChanged事件
void on_lvWid_Source_currentItemChanged(QListWidgetItem *current, QListWidgetItem *previous);
在这里我们把选中行的字体变为蓝色行背景变为红色
在.cpp里实现
void MyElementsView::on_lvWid_Source_currentItemChanged(QListWidgetItem *current, QListWidgetItem *previous)
{
if(current==Q_NULLPTR)return;
if(previous!=Q_NULLPTR)
{
previous->setBackgroundColor(Qt::transparent);
previous->setTextColor(Qt::black);
}
current->setBackgroundColor(Qt::red);
current->setTextColor(Qt::blue);
}
效果如下
添加事件比较简单
在cpp实现
void MyElementsView::on_btn_AddEvent_clicked()
{
ui->lvWid_Source->addItem(tr("new item : ") +QString::number(ui->lvWid_Source->count()));
}
直接用它自己的addItem方法就可以
删除有些麻烦
void MyElementsView::on_btn_Del_clicked()
{
if(ui->lvWid_Source->currentItem()!=Q_NULLPTR)
{
QListWidgetItem * item = ui->lvWid_Source->takeItem(ui->lvWid_Source->currentRow());
delete item;
}
}
删除要先把选中的widget取出来再进行删除
修改实现也比较简单
void MyElementsView::on_btn_Modify_clicked()
{
if(ui->lvWid_Source->currentItem()!=Q_NULLPTR)
{
ui->lvWid_Source->currentItem()->setText(tr("Modify :Item ") +QString::number(ui->lvWid_Source->count()));
}
}
看一下效果
完整代码如下
.h
#ifndef MYELEMENTSVIEW_H
#define MYELEMENTSVIEW_H
#include <QDialog>
#include<QListWidgetItem>
namespace Ui {
class MyElementsView;
}
class MyElementsView : public QDialog
{
Q_OBJECT
public:
explicit MyElementsView(QWidget *parent = 0);
~MyElementsView();
private:
Ui::MyElementsView *ui;
private slots:
void on_btn_AddEvent_clicked();
void on_btn_Del_clicked();
void on_btn_Modify_clicked();
void on_lvWid_Source_currentItemChanged(QListWidgetItem *current, QListWidgetItem *previous);
};
#endif // MYELEMENTSVIEW_H
.cpp完整代码
#include "myelementsview.h"
#include "ui_myelementsview.h"
#include <QToolBar>
#include<QHBoxLayout>
#include<QMainWindow>
#include<QMessageBox>
#include<QList>
MyElementsView::MyElementsView(QWidget *parent) :
QDialog(parent),
ui(new Ui::MyElementsView)
{
ui->setupUi(this);
for(int i=0;i<5;i++)
{
ui->lvWid_Source->addItem(tr("item : ") + QString::number(i));
}
}
void MyElementsView::on_btn_AddEvent_clicked()
{
ui->lvWid_Source->addItem(tr("new item : ") +QString::number(ui->lvWid_Source->count()));
//多选
// const QList<QListWidgetItem *> items = ui->lvWid_Source->selectedItems();
// foreach (QListWidgetItem * item, items) {
// item->text();
// item->setTextColor(Qt::blue);
// }
}
void MyElementsView::on_btn_Del_clicked()
{
if(ui->lvWid_Source->currentItem()!=Q_NULLPTR)
{
QListWidgetItem * item = ui->lvWid_Source->takeItem(ui->lvWid_Source->currentRow());
delete item;
}
}
void MyElementsView::on_btn_Modify_clicked()
{
if(ui->lvWid_Source->currentItem()!=Q_NULLPTR)
{
ui->lvWid_Source->currentItem()->setText(tr("Modify :Item ") +QString::number(ui->lvWid_Source->count()));
}
}
MyElementsView::~MyElementsView()
{
delete ui;
}
void MyElementsView::on_lvWid_Source_currentItemChanged(QListWidgetItem *current, QListWidgetItem *previous)
{
if(current==Q_NULLPTR)return;
if(previous!=Q_NULLPTR)
{
previous->setBackgroundColor(Qt::transparent);
previous->setTextColor(Qt::black);
}
current->setBackgroundColor(Qt::red);
current->setTextColor(Qt::blue);
}
- SpringData JPA就是这么简单
- Openflow细节理解之—Buffer_id篇
- 移动商城项目总结
- 移动商城第一篇【搭建项目环境+数据模型】
- 移动商城第二篇(品牌管理模块)【文件上传、数据校验、CRUD】
- 手把手在亚马逊EC2上搭建Keras GPU
- 移动商城第三篇(商品管理)【查询商品、添加商品】
- 移动商城第四篇(商品管理)【添加商品续篇、商品审核和上下架、前台展示、后台筛选】
- 移动商城第五篇(用户模块)【用户登陆、回显用户、拦截器、收货地址】
- 移动商城第六篇【单品查询、静态化页面】
- 移动商城第七篇【购物车增删改查、提交订单】
- Shiro入门这篇就够了【Shiro的基础知识、回顾URL拦截】
- OFTest(一):如何忽略一些字段在端口poll报文
- Shiro第二篇【授权、整合Spirng、过滤器】
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- spring boot 项目中自动执行 sql 语句
- 搭建简易的物联网服务端和客户端-邮件通知(十九)
- LeetCode37|两颗二叉搜索树中所有元素
- LeetCode45|数组中重复的数据
- 搭建简易的物联网服务端和客户端-网络控制(二十)
- LeetCode44|在每个树行中找最大值
- LeetCode43|最大层内元素和
- 搭建简易的物联网服务端和客户端-Maibu控制(二十一)
- LeetCode42|层数最深叶子节点的和
- LeetCode41|数组中数组出现的次数
- Django后台管理界面修改(源文件修改)
- 前端工程师不可不知的Nginx知识
- Django1.11 简单登录注册
- 基因表达聚类分析之初探SOM - 自组织特征图
- JMH - Java 代码性能测试的终极利器、必须掌握