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();
}