0

我想以“函数式”编程风格显示图像。基本上,我对我的图像进行了许多处理,有时我想显示结果。所以我正在尝试:

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 逻辑之外工作。

4

1 回答 1

2

我真的不明白您所说的“以某种functional样式显示图像”是什么意思。我认为你的意思是你想要一个功能来做图像的显示部分。在这种情况下,您似乎对“功能”范式实际上是什么存在误解。

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

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(创建和显示对话框的不错概述)

于 2012-03-29T08:22:36.193 回答