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调试法 --在代码中加入一定的打印语句 --打印程序状态和关键变量的值 断点调试法: --在开发环境中的对应代码行加上断点 -- ...
随机推荐
- 软件工程(C编码实践)学习总结及心得
徐礼超 原创作品转载请注明出处:http://www.cnblogs.com/xulichao <软件工程(C编码实践篇)>MOOC课程http://mooc.study.163.com ...
- mysql 去重,跨表更新,跨表删除
一.去重 1.查询出重复的记录 CREATE TABLE push_log_full_2013_10_30_tmp SELECT * FROM `push_log_full` WHERE time B ...
- 一条诡异的insert语句
问题背景 有同事反馈在mysql上面执行一条普通的insert语句,结果报错, execute failed due to >>> Incorrect string value: ' ...
- 挖一挖C#中那些我们不常用的东西之系列(2)——IsXXX 系列方法
不知道有人做没做过对日外包,如果做过的话,那么对vb.net应该非常熟悉了,当年我刚毕业的时候也做过四个月的外包,那种日子简直 不是人过的,就连大楼下面买珠宝的阿姨都说,这些孩子,只看过他们上班,就没 ...
- jquery checkbox操作
一.通过选择器选取CheckBox: 1.给CheckBox设置一个id属性,通过id选择器选取: <input type="checkbox" name="myB ...
- MySQL 调优基础(一) CPU与进程
一般而言,MySQL 的调优可以分为两个层面,一个是在MySQL层面上进行的调优,比如SQL改写,索引的添加,MySQL各种参数的配置:另一个层面是从操作系统的层面和硬件的层面来进行调优.操作系统的层 ...
- 前端构建工具gulp介绍
2016年3月3日 10:46:08 晴 前端构建工具gulpjs的使用介绍及技巧 gulpjs是一个前端构建工具,与gruntjs相比,gulpjs无需写一大堆繁杂的配置参数,API也非常简 ...
- 【mysql】高可用集群之MMM
一.复制的常用拓扑结构 复制的体系结构有以下一些基本原则: (1) 每个slave只能有一个master: (2) 每个slave只能有一个唯一的服务器ID: (3) 每个maste ...
- SQL Server 分隔字符串函数实现
在SQL Server中有时候也会遇到字符串进行分隔的需求.平时工作中常常遇到这样的需求,例如:人员数据表和人员爱好数据表,一条人员记录可以多多人员爱好记录,而往往人员和人员爱好在界面展示层要一并提交 ...
- Java api 入门教程 之 JAVA的String 类
1.String对象的初始化 由于String对象特别常用,所以在对String对象进行初始化时,Java提供了一种简化的特殊语法,格式如下: String s = “abc”; s = “Java语 ...