QT QListwidgetItem


listitem.cpp Source Code:
#include "listitem.h"
#include "ui_listitem.h"
#include <QListView>
#include <QListWidgetItem>
#include <QObject>
#include <QString>
#include <QDebug>
#include <QtSql/QSqlDatabase>
#include <ctime>
#include <QTime>
 
 
listitem::listitem(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::listitem)
{
    ui->setupUi(this);
    ui->listWidget->setViewMode(QListView::IconMode);//设置显示模式为图标模式
    //ui->listWidget->setViewMode(QListView::ListMode);
    InsertIcon();//添加目录图片文件名称
    this->setMaximumSize(421,444);
    this->setMinimumSize(421,444);
    QListWidgetItem *IconItem=new QListWidgetItem(QIcon(":/new/prefix1/image/164-font.png"),tr("深圳"),ui->listWidget);//添加QListWidgetItem项目
    QListWidgetItem *IconItem1=new QListWidgetItem(QIcon(":/new/prefix1/image/cut.png"),tr("天津"),ui->listWidget);//添加QListWidgetItem
    QListWidgetItem *IconItem2=new QListWidgetItem(QIcon(":/new/prefix1/image/convert.png"),tr("上海"),ui->listWidget);//添加QListWidgetItem项目
 
 
    QObject::connect(ui->pushButton,SIGNAL(clicked()),this,SLOT(addCitySlot()));//添加项
    QObject::connect(ui->lineEdit,SIGNAL(returnPressed()),this,SLOT(addCitySlot()));//添加回车键入
    QObject::connect(ui->pushButton_2,SIGNAL(clicked()),this,SLOT(deleteCitySlot()));//删除选项
    QObject::connect(ui->pushButton_3,SIGNAL(clicked()),this,SLOT(deleteAllSlot()));//删除所有项
    QObject::connect(ui->pushButton_4,SIGNAL(clicked()),this,SLOT(showDirSlot()));//导入目录
    QObject::connect(ui->listWidget,SIGNAL(itemClicked(QListWidgetItem*)),this,SLOT(singleClickedSlot(QListWidgetItem*)));//左键单击
    QObject::connect(ui->listWidget,SIGNAL(itemDoubleClicked(QListWidgetItem*)),this,SLOT(doubleClickedSlot(QListWidgetItem*)));//右键双击
    //QObject::connect(ui->listWidget,SIGNAL(itemChanged(QListWidgetItem*)),this,SLOT(singleClickedSlot(QListWidgetItem*)));
}
 
 
listitem::~listitem()
{
    delete ui;
}
 
 
void listitem::addCitySlot()
{
    //create a item add to litwidget
    QString cityName=ui->lineEdit->text();
    if(!cityName.isEmpty())
    {
        srand((unsigned)time(0));//设置随机种子
        //qsrand(QTime(0,0,0).secsTo(QTime::currentTime()));
        int ran_num=rand()%23;
        int a;
        for(int i=0;i<ran_num;i++)
        {
            srand((unsigned)time(0));//设置随机种子
            a=rand()%23;
        }
        QListWidgetItem *IconItem=new QListWidgetItem(QIcon(":/new/prefix1/image/"+IconList->at(a)),cityName,ui->listWidget);
        //QListWidgetItem *item=new QListWidgetItem;
        //item->setText(cityName);
        //ui->listWidget->addItem(item);
        ui->lineEdit->setText("");
    }
    else
    {
        QMessageBox::information(this,"Send Error","录入的内容不能为空!!");
    }
 
 
}
 
 
void listitem::deleteCitySlot()
{
    //create a item delete to litwidget
    QString cityName=ui->lineEdit->text();
    if(ui->listWidget->count()>0)
    {
        if(!cityName.isEmpty())
        {
            int index=ui->listWidget->count();
            for(int n=0;n<index;n++)
            {
                if(ui->listWidget->item(n)->text()==cityName)
                {
                    delete ui->listWidget->item(n);
                }
            }
        }
        else
        {
            QListWidgetItem *item=ui->listWidget->takeItem(ui->listWidget->currentRow());//光标选中的当前行
            delete item;
        }
    }
    else
    {
        QMessageBox::information(this,"System Send Err!!","列表内容无为空!!");
    }
}
 
 
void listitem::deleteAllSlot()
{
    int counter=ui->listWidget->count();//获取列表项的总数目
    ui->listWidget->setFocus();//将光标设置到表框上,若注释该语
    for(int index=0;index<counter;index++)
    {
        //QListWidgetItem *item=ui->listWidget->takeItem(index);
        QListWidgetItem *item=ui->listWidget->takeItem(ui->listWidget->currentRow());
        delete item;
    }
}
 
 
void listitem::showDirSlot()
{
    //QStringList fileNames=QFileDialog::getOpenFileNames(this,"Open File",QDir::currentPath());
    ui->listWidget->clear();
    QDir dir=QDir::current();
    QStringList fileNames=dir.entryList();
    if(fileNames.size()==0)
    {
        QMessageBox::information(this,"Error Message","No File Select");
        return;
    }
    for(int index=0;index<fileNames.size();index++)
    {
        if(fileNames.at(index)!="."&&fileNames.at(index)!="..")
        {
            srand((unsigned)time(0));//设置随机种子
            //qsrand(QTime(0,0,0).secsTo(QTime::currentTime()));
            int ran_num=rand()%23;
            int a;
            for(int i=0;i<ran_num;i++)
            {
                srand((unsigned)time(0));//设置随机种子
                a=rand()%23;
            }
            QListWidgetItem *IconItem=new QListWidgetItem(QIcon(":/new/prefix1/image/"+IconList->at(a)),fileNames.at(index),ui->listWidget);
            //QListWidgetItem *item=new QListWidgetItem;
            //item->setText(fileNames.at(index));
            //ui->listWidget->addItem(item);
        }
    }
}
 
 
void listitem::singleClickedSlot(QListWidgetItem *item)
{
    QMessageBox::information(this,"information","single clicked text is:"+item->text());
}
void listitem::doubleClickedSlot(QListWidgetItem *item)
{
    QMessageBox::information(this,"information","double clicked text is:"+item->text());
}
 
 
void listitem::InsertIcon()
{
    //qDebug()<<"PATH1:"<<QCoreApplication::applicationDirPath();
    //qDebug()<<"PATH2:"<<QDir::currentPath();
    //QMessageBox::information(this,"Path1",QCoreApplication::applicationDirPath());
    //QMessageBox::information(this,"Path2",QDir::currentPath());
    QString path=QDir::currentPath()+"/image";//读取执行目录地址
    QDir dir(path);//设置路径
    QFileInfoList file_list=dir.entryInfoList(QDir::Files|QDir::Hidden|QDir::NoSymLinks);
    for(int i=0;i!=file_list.size();i++)
    {
        QString name=file_list.at(i).fileName();//读取路径下文件名称
        IconList->append(name);
    }
 
 
    //QMessageBox::information(this,"path1",path);
    //QDir dir(path);
}

listitem.h source code:

#ifndef LISTITEM_H
#define LISTITEM_H
#include <QListView>
#include <QListWidgetItem>
#include <QWidget>
#include <QMessageBox>
#include <QString>
#include <QStringList>
#include <QFileDialog>
#include <QMessageBox>
#include <QtDebug>
#include <QDir>
#include <QFileDialog>
#include <QList>
 
 
namespace Ui {
class listitem;
}
 
 
class listitem : public QWidget
{
    Q_OBJECT
 
 
public:
    explicit listitem(QWidget *parent = 0);
    ~listitem();
 
 
private:
    Ui::listitem *ui;
    QStringList *IconList=new QStringList();
    //QList<QString> IconListStr=new QList<QString>();
private slots:
    void InsertIcon();//插入ICO图片地址
    void addCitySlot();//添加列表
    void deleteCitySlot();//删除列表单项
    void deleteAllSlot();//删除列表所有项
    void showDirSlot();//显示目录
    void singleClickedSlot(QListWidgetItem *);//单击列表事件
    void doubleClickedSlot(QListWidgetItem *);//双击列表事件
};
 
 
#endif // LISTITEM_H

main.cpp Source code:

#include "listitem.h"
#include <QApplication>
 
 
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QString strPath=QApplication::applicationDirPath();
    strPath+="/fonts.png";
    a.setWindowIcon(QIcon(strPath));
    listitem w;
    w.show();
 
 
    return a.exec();
}




 

猜你喜欢

转载自blog.csdn.net/u013934107/article/details/80866264
QT