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=;i<;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 = );
~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=;i<;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);
}
Qt学习笔记 ListWidget的增删改的更多相关文章
- EF学习笔记-1 EF增删改查
首次接触Entity FrameWork,就感觉非常棒.它节省了我们以前写SQL语句的过程,同时也让我们更加的理解面向对象的编程思想.最近学习了EF的增删改查的过程,下面给大家分享使用EF对增删改查时 ...
- HTML5+ 学习笔记3 storage.增删改查
//插入N条数据 function setItemFun( id ) { //循环插入100调数据 var dataNum = new Number(id); for ( var i=0; i< ...
- 【JAVAWEB学习笔记】20_增删改查
今天主要是利用三层架构操作数据库进行增删查改操作. 主要是编写代码为主. 附图: 前台和后台 商品的展示 修改商品
- Python学习笔记-列表的增删改查
- [学习笔记] Oracle基础增删改查用法
查询 select *|列名|表达式 from 表名 where 条件 order by 列名 select t.* from STUDENT.STUINFO t where t.stuname = ...
- qt学习笔记(五) QGraphicsPixmapItem与QGraphicsScene的编程实例 图标拖动渐变效果
应大家的要求,还是把完整的project文件贴出来,大家省点事:http://www.kuaipan.cn/file/id_48923272389086450.htm 先看看执行效果,我用的群创7寸屏 ...
- python学习之-成员信息增删改查
python学习之-成员信息增删改查 主要实现了成员信息的增加,修改,查询,和删除功能,写着玩玩,在写的过程中,遇到的问题,旧新成员信息数据的合并,手机号和邮箱的验证,#!/usr/bin/env p ...
- Qt学习笔记-Widget布局管理
Qt学习笔记4-Widget布局管理 以<C++ GUI Programming with Qt 4, Second Edition>为参考 实例:查找对话框 包含三个文件,f ...
- QT学习笔记(一)——Helloworld
QT学习笔记(一)--Helloworld 一.调试的基本方法: Log调试法 --在代码中加入一定的打印语句 --打印程序状态和关键变量的值 断点调试法: --在开发环境中的对应代码行加上断点 -- ...
随机推荐
- 谈谈yii2-gii如何自定义模板
作者:白狼 出处:http://www.manks.top/article/yii2_gii_custom_template本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位 ...
- Bootstrap弹出框(modal)垂直居中
最近在做一个eit项目,由于此项目里面一些框架要遵循nttdata的一些规则,故用到了Bootstrap这个东东,第一次碰到这个东东,有很大抵触,觉得不好,但用起来我觉得和别的弹出框真没什么两样.废话 ...
- Javascript之旅——第一站:从变量说起
工作这几年,js学的不是很好,正好周末有些闲时间,索性买本<js权威指南>,大名鼎鼎的犀牛书,好好的把js深入的看一看.买过这本 书的第一印象就是贼厚,不过后面有一半部分都是参考手册. 一 ...
- jquery checkbox操作
一.通过选择器选取CheckBox: 1.给CheckBox设置一个id属性,通过id选择器选取: <input type="checkbox" name="myB ...
- 一篇博客理解Recyclerview的使用
从Android 5.0开始,谷歌公司推出了RecylerView控件,当看到RecylerView这个新控件的时候,大部分人会首先发出一个疑问,recylerview是什么?为什么会有recyler ...
- MySQL调优系列基础篇
前言 有一段时间没有写博客了,整天都在忙,上班,录制课程,恰巧最近一段时间比较清闲,打算弄弄MYSQL数据库. 关于MySQL数据库,这里就不做过多的介绍,开源.免费等特性深受各个互联网行业喜爱,尤其 ...
- 数据分页处理系列之三:Neo4j图数据分页处理
首先简单介绍下Neo4j,Neo4j是一个高性能的NOSQL图形数据库,它将结构化数据存储在网络上而不是表中,它是一个嵌入式的.基于磁盘的.具备完全的事务特性的Java持久化引擎,但是它将结构化数 ...
- spring多数据源的处理 mybatis实现跨库查询
实现Myibatis动态sql跨数据库的处理 Spring动态配置多数据源,即在大型应用中对数据进行切分,并且采用多个数据库实例进行管理,这样可以有效提高系统的水平伸缩性.而这样的方案就会不 同于常见 ...
- mkfifo
管道是Linux的十种文件类型之一,使用管道通信本质上还是以文件作为通信的媒介 有名管道+无名管道=管道 有名管道(FIFO文件):就是 有文件名的管道, 可以用于任意两个进程间的通信 无名管道(pi ...
- php反射机制
PHP5添加了一项新的功能:Reflection.这个功能使得phper可以reverse-engineer class, interface,function,method and extensio ...