zoukankan      html  css  js  c++  java
  • 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);
    }
  • 相关阅读:
    laravel5.* 生成key
    Laravel 调试利器 Laravel Debugbar 扩展包安装及使用教程
    JS相关
    Git常用命令(全)
    linux添加计划任务
    30个php操作redis常用方法代码例子(转载)
    获取服务器IP和客户端IP
    PHP-redis中文文档(相关)
    常用算法排序
    软件下载(汇总)
  • 原文地址:https://www.cnblogs.com/li-peng/p/3651945.html
Copyright © 2011-2022 走看看