如何以“功能”编程风格显示QImage

时间:2012-03-29 08:18:10

标签: c++ qt qimage

我希望以“功能”编程风格显示图像。基本上,我在我的图像上操作了许多过程,有时我想显示结果。所以我在努力:

int display(string file, int argc, char *argv[])
{
    QApplication a1(argc,argv);
    QImage myImage;
    myImage.load(file.c_str());
    QLabel myLabel;
    myLabel.setPixmap(QPixmap::fromImage(myImage));
    myLabel.show();
    return a1.exec();
}
int main(int argc, char *argv[])
{
    MyImageDataStructure img;
    img.erosion(5);//process 1
    img.save("lenaero.png");
    display("lenaeor.png",argc,argv); // display the first result
    img.dilation(5);//process 2
    img.save("lenaopening.png");
    display("lenaopening.png",argc,argv); // display the second result
    return 1;
}

但是在第二次执行显示功能时,会发生错误。在保持这种逻辑的同时,您有什么想法来解决这个问题吗?

由于

注意:除了Qt之外,我不想包含外部库,我知道我想在Qt逻辑之外工作。

1 个答案:

答案 0 :(得分:2)

我真的不明白你的意思是“以functional风格显示图像”。我想你的意思是你想要一个函数来为图像做显示部分。在这种情况下,你似乎对于“功能”范式究竟是什么存在误解。

然而,你的问题非常不同。您需要将QApplication声明移动到main函数中:

int main(...) {
    QApplication a(argc, argv);

    // ...

}

将其移出display()函数。

修改

我重新阅读了你的代码,但它有很多问题。每次要显示图像时,都不应该创建单独的应用程序。更好的方法是使用QDialog。创建一个对话框,标签为图像,并在每次要显示图像时调用show

有用的链接:

http://qt-project.org/doc/qt-4.8/QDialog.html

http://sector.ynet.sk/qt4-tutorial/my-first-qt-gui-application.html(很好地概述了创建和显示对话框)