Как отобразить QImage в «функциональном» стиле программирования - PullRequest
0 голосов
/ 29 марта 2012

Я хочу отобразить изображение в «функциональном» стиле программирования. По сути, я управляю несколькими процессами на своем изображении и иногда хочу отобразить результат. Итак, я пытаюсь:

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 Ответ

2 голосов
/ 29 марта 2012

Я не совсем понимаю, что вы подразумеваете под "отображать изображение в стиле functional". Я думаю, что вы имеете в виду, что вы хотите, чтобы функция выполняла часть отображения для изображения. В этом случае, похоже, с вашей стороны существует неправильное представление о том, что такое «функциональная» парадигма.

Тем не менее, ваша проблема совсем другая. Вам нужно переместить объявление QApplication в основную функцию:

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

    // ...

}

И выведите его из функции display().

EDIT

Я перечитал ваш код, и с ним много чего не так. Вы НЕ ДОЛЖНЫ создавать отдельное приложение каждый раз, когда хотите отобразить изображение. Гораздо лучше было бы использовать QDialog. Создайте диалог с меткой в ​​качестве изображения и вызывайте show каждый раз, когда вы хотите отобразить изображение.

Полезные ссылки:

http://qt -project.org / док / кварта-4,8 / QDialog.html

http://sector.ynet.sk/qt4-tutorial/my-first-qt-gui-application.html (Хороший обзор создания и отображения диалогов)

...