Qt - 如何在两个不同的按钮中使用相同的图像?

时间:2017-05-15 01:18:48

标签: c++ qt

好的,所以我在Qt中遇到问题,我有一个我用QImage加载的图像,我需要在我的应用程序的其余部分使用它。我使用PushButton加载图像,然后使用QPixmap显示图像。

我不得不使用动态内存分配,因此显示的图像在事件结束后不会自动删除。但现在当我需要在第一个Button中加载图像时,问题就出现了,而在其他按钮中则需要使用它们。所以我猜我需要申报这些全球权利吗?我将如何在Qt中进行此操作?我只是在表单关闭时使用 delete()删除我的小部件?

以下是我的代码块:

void MainWindow::on_pushButton_clicked()
{
/*Open the image using a File Dialog so the user selects his own image.
  Note: Image is best to be kept at 150x150, therefore image
  will be scaled down to the aforementioned ratio.*/

QString imageFile = QFileDialog::getOpenFileName(this,"Open Image","C:/","Formats (*.bmp *.png)");

if (!imageFile.isEmpty())
{
    // Test the image, if it isn't empty, image will be the loaded image from dialog.
    QImage image(imageFile);

    if(image.isNull())
    {
        // Error displaying image -> display message dialog box.
        QMessageBox::warning(this,"Error", "There was a problem displaying your image, make sure that is one of the supported formats.", "OK");
        return;
    }
    else
    {
        QMessageBox::information(this, "Image Load", "Your image was successfully opened.","OK");
        return;
    }
}

QImage *imageOriginal = new QImage(150,150, QImage::Format_ARGB32);
imageOriginal->load(imageFile);

QLabel *labelOriginal = new QLabel(this);
labelOriginal->setPixmap(QPixmap::fromImage(*imageOriginal));
labelOriginal->setGeometry(ui->title1->x(), ui->title1->y()+30, 150, 150);
labelOriginal->show();
labelOriginal->deleteLater();
}

到目前为止一切正常,我只需要在其他事件中使用它们。我需要通过更改图像的颜色值等来处理图像,并显示原始图像旁边的所有不同更改。

0 个答案:

没有答案