使用QpushButton切换QLabel中显示的图像

时间:2017-07-28 03:45:09

标签: c++ qt

我是初学者。我的项目的一部分是使用QpushButton切换显示在QLabel中的图像,第一步我将打开一个文件夹并为.jpg设置过滤器,然后将其路径保存在QString列表中。这是我的代码:

 client file

 $.ajax({
 type:"POST",
 url:"modify_cbndtb.php",
 data: {cabinetNum:id},
 success:function (data) {
   $('#1U').val(data[0].num1);
   $('#11U').val(data[0].num2);
   $('#2U').val(data[0].num3);
   $('#12U').val(data[0].num4);
   } 
 });

这个文件夹中有很多图片,我知道为什么我失败了,因为每次按下使用该功能的按钮时,整数我总是等于0.所以任何人都可以给我一个建议吗?

1 个答案:

答案 0 :(得分:0)

要通过QFileDialog方法选择我建议使用getExistingDirectory()课程的文件夹。另一个改进是生成仅负责放置新图像的功能。

还有一点需要注意entryList()返回过滤器文件的名称,但这不是完整路径,为此我们使用filePath()函数。

<强> *的.h

private:
    QDir dir;
    QStringList images;
    int index;

    void updatePixmap();

*。CPP

{//constructor
    ui->setupUi(this);

    index = 0;
    QString dirname = QFileDialog::getExistingDirectory(this, "Select directory", "/home/jin/test/");
    if(!dirname.isEmpty()){
        dir = QDir(dirname);
        dir.setNameFilters(QStringList()<< "*.jpeg" << "*.jpg");
        images = dir.entryList();
    }

    updatePixmap();
}


void data_labeling::on_next_clicked()
{
    updatePixmap();
}

void data_labeling::updatePixmap()
{
    if(images.count() > 0){
        int w = ui->face_pic->width();
        int h = ui->face_pic->height();

        QImage image(dir.filePath(images[index]));

        ui->face_pic->setPixmap(QPixmap::fromImage(image).scaled(h,w,Qt::KeepAspectRatio));
        index  = (index +1) % images.count();
    }
}