学习了一下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的增删改的更多相关文章

  1. EF学习笔记-1 EF增删改查

    首次接触Entity FrameWork,就感觉非常棒.它节省了我们以前写SQL语句的过程,同时也让我们更加的理解面向对象的编程思想.最近学习了EF的增删改查的过程,下面给大家分享使用EF对增删改查时 ...

  2. HTML5+ 学习笔记3 storage.增删改查

    //插入N条数据 function setItemFun( id ) { //循环插入100调数据 var dataNum = new Number(id); for ( var i=0; i< ...

  3. 【JAVAWEB学习笔记】20_增删改查

    今天主要是利用三层架构操作数据库进行增删查改操作. 主要是编写代码为主. 附图: 前台和后台 商品的展示 修改商品

  4. Python学习笔记-列表的增删改查

  5. [学习笔记] Oracle基础增删改查用法

    查询 select *|列名|表达式 from 表名 where 条件 order by 列名 select t.* from STUDENT.STUINFO t where t.stuname = ...

  6. qt学习笔记(五) QGraphicsPixmapItem与QGraphicsScene的编程实例 图标拖动渐变效果

    应大家的要求,还是把完整的project文件贴出来,大家省点事:http://www.kuaipan.cn/file/id_48923272389086450.htm 先看看执行效果,我用的群创7寸屏 ...

  7. python学习之-成员信息增删改查

    python学习之-成员信息增删改查 主要实现了成员信息的增加,修改,查询,和删除功能,写着玩玩,在写的过程中,遇到的问题,旧新成员信息数据的合并,手机号和邮箱的验证,#!/usr/bin/env p ...

  8. Qt学习笔记-Widget布局管理

    Qt学习笔记4-Widget布局管理       以<C++ GUI Programming with Qt 4, Second Edition>为参考 实例:查找对话框 包含三个文件,f ...

  9. QT学习笔记(一)——Helloworld

    QT学习笔记(一)--Helloworld 一.调试的基本方法: Log调试法 --在代码中加入一定的打印语句 --打印程序状态和关键变量的值 断点调试法: --在开发环境中的对应代码行加上断点 -- ...

随机推荐

  1. NuGet学习笔记3——搭建属于自己的NuGet服务器

    文章导读 创建NuGetServer Web站点 发布站点到IIS 添加本地站点到包包数据源 在上一篇NuGet学习笔记(2) 使用图形化界面打包自己的类库 中讲解了如何打包自己的类库,接下来进行最重 ...

  2. 快速入门:十分钟学会Python

    初试牛刀 假设你希望学习Python这门语言,却苦于找不到一个简短而全面的入门教程.那么本教程将花费十分钟的时间带你走入Python的大门.本文的内容介于教程(Toturial)和速查手册(Cheat ...

  3. Mongodb Manual阅读笔记:CH3 数据模型(Data Models)

    3数据模型(Data Models) Mongodb Manual阅读笔记:CH2 Mongodb CRUD 操作Mongodb Manual阅读笔记:CH3 数据模型(Data Models)Mon ...

  4. Java触发器CronTrigger

    摘要:如果需要像日历那样按日程来触发任务,而不是像SimpleTrigger 那样每隔特定的间隔时间触发,CronTriggers通常比SimpleTrigger更有用. 一.web.xml: < ...

  5. MySQL入门(二)

    一 MySQL概述 MySQL是一个很受欢迎的开源数据库,当我从Oracle转来做MySQL的时候,感觉最深刻的一点就是,这家伙居然是Server和Storage分开的!而且更不能忍的是,它竟然是插件 ...

  6. google-analytics.com

    最近有朋友问,为什么我的网站打开时在执行google analytics有较长的停顿时间.要如果解决?这个问题其实很早就有,最好的解决办法是将网站所有页面的传统追踪代码统一替换为最新的异步追踪代码.不 ...

  7. PCI在linux系统中注册与注销示例

    1. pci_driver结构struct pci_driver {    struct list_head node;    const char *name;    const struct pc ...

  8. XSS quiz练习题做题过程及感悟

    XSS quiz 最近刚学XSS.所以新手理解如有错误不当,欢迎批评指正. 第1题 一开始做,使用了Chrome浏览器.第一题怎么都做不出来.突然想起来使用IE,打开IE11,才成功了. <sc ...

  9. MMORPG大型游戏设计与开发(客户端架构 part3 of vegine)

    无论在何处在什么地方,我们都或多或少的接触到数学知识.特别是在客户端中,从打开界面的那一刻起就有太多与数学扯上的关联,如打开窗口的大小,窗口的位置,窗口里面的元件对象,以及UI的坐标等等.而在进入游戏 ...

  10. LInux_System_Call_INT_80h

    Int 80h Website (Copy from Linux-System-Call) List of Linux/i386 system calls Copyright (C) 1999-200 ...