我希望以“功能”编程风格显示图像。基本上,我在我的图像上操作了许多过程,有时我想显示结果。所以我在努力:
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逻辑之外工作。
答案 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(很好地概述了创建和显示对话框)