QT 使用label和commandlinkbutton循环显示图片

首先,建立Qt Gui Application项目

1.控件

控件类型                               控件名称                   控件说明              文本

QLabel                                  imagelabel                显示图片             TextLabel

QCommandlinkButton          commandbuttonnext   显示下一张图片   下一张


2、添加资源

     下载好显示的图片,放到项目目录的images文件夹(自己创建)下。

      右击项目->添加新文件(New File)->QT->QT Resource file 右下角选择路径,name:images

      单击“finish”。

      然后选中“image.qrc”, 在编辑界面正下方,单击“Add"->"add prefix"添加路径前缀(即图片文件的路径),

      之后,还在这里"Add files" 选择要添加的图片。


3、代码

   1)头文件mainwindow.h, 类MainWindow中添加

         private:

               QStringList   list;         //图片列表

               int currentImage;         //当前图片编号

   2)  在图形界面,右击commandlinkbuttonnext,选择”转到槽“, 添加槽函数

   3) 在mainwindow.cpp中

       添加头文件#include         ,      #include ileDialog>

       在构造函数中添加:

        ui->setupUi(this);//这是系统自动生成的

      //一下为添加代码

        this->currentImage = 0;

    //初始化图片列表
    this->list<<"./images/1.jpg"<<"./images/2.jpg"<<"./images/3.jpg"; //注意路径的表示,否则出错
    ui->imagelabel->setBackgroundRole(QPalette::Base);
    ui->imagelabel->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored);
    ui->imagelabel->setScaledContents(true);
    resize(500, 400);
    QString fileName = list.at(this->currentImage);
    if(!fileName.isEmpty())
    {
        QImage image(fileName);
        if(image.isNull())
        {
            QMessageBox::information(this, tr("Image Viewer"), tr("Cannot load %1.").arg(fileName));
            return ;
        }
        ui->imagelabel->setPixmap(QPixmap::fromImage(image));
    }


给槽函数on_commandlinkbuttonnext_clicked()添加:

    if(this->currentImage == 2)

         this->currentImage = 0;

    else

        this->currentImage++;
    QString fileName = list.at(this->currentImage);
    if(!fileName.isEmpty())
    {
        QImage image(fileName);
        if(image.isNull())
        {
            QMessageBox::information(this, tr("Image Viewer"), tr("Cannot load %1.").arg(fileName));
            return ;
        }
        ui->imagelabel->setPixmap(QPixmap::fromImage(image));
    }

4.其他不变,运行可以看到效果。


5.注意事项:一定注意初始化时,路径名和”add prefix“ 时的路径名, 如果不成功,可以多次试验。

你可能感兴趣的:(QT)