QT listwiget 控件添加图片

很多的时候我们需要制作类似手机的中的电子相框, 可以用listwidget 控件实现  直接上代码 

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    this->move(0,0);

//    ui->listWidget->resize(365,400);
    //设置QListWidget的显示模式
    ui->listWidget->setViewMode(QListView::IconMode);
    //设置QListWidget中单元项的图片大小
    ui->listWidget->setIconSize(QSize(278,278));
    //设置QListWidget中单元项的间距
    ui->listWidget->setSpacing(10);
    //设置自动适应布局调整(Adjust适应,Fixed不适应),默认不适应
    ui->listWidget->setResizeMode(QListWidget::Adjust);
    //设置不能移动
    ui->listWidget->setMovement(QListWidget::Static);

    connect(ui->listWidget,SIGNAL(itemClicked(QListWidgetItem*)),this,SLOT(listWidgetClicked(QListWidgetItem*)));

    //显示图像空间的照片数量
//    QString  imageWorkPath=imagePATH;  //  /home/wanghuixi/keysiQt/workspace
    QDir * imagePath=new QDir("./123/");
    QStringList filter;
    filter << "*.jpg"<< "*.png"  ;
    QList<QFileInfo> *fileInfo=new QList<QFileInfo>(imagePath->entryInfoList(filter));
    int imageSum = fileInfo->count();//the file have "."and ".." file
    QList<QString>  fileNames;
    fileNames.clear();
    if(imageSum == 0)
    {
        return;
    }
    for(int i=0;i<imageSum;i++)
    {
      fileNames.append(fileInfo->at(i).filePath());
    }
    for(auto tmp : fileNames)
    {
        qDebug()<<tmp<<endl;
        ui->listWidget->addItem(new QListWidgetItem(QIcon(tmp),"Tornado"));
    }


}

MainWindow::~MainWindow()
{
    delete ui;
}
void MainWindow::listWidgetClicked(QListWidgetItem *item)
{
    qDebug() << "ddsfsdf"  << "   "<<item->text() << "  " << ui->listWidget->currentIndex().row() << "   "<< ui->listWidget->count()<< endl;
    ui->listWidget->removeItemWidget(item);
    delete item;
}

运行的结果就是

可以点击指定的照片会返回照片的编号 我们可以根据照片的编号 可以干很多事情 。

 工程链接 

https://pan.baidu.com/s/1kYtFou2q-xu6SapUzA6TTw

猜你喜欢

转载自www.cnblogs.com/wanghuixi/p/9298403.html