好的,所以我在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();
}
到目前为止一切正常,我只需要在其他事件中使用它们。我需要通过更改图像的颜色值等来处理图像,并显示原始图像旁边的所有不同更改。