Qt отобразить изображение в новом окне - PullRequest
2 голосов
/ 09 апреля 2010

Я наивен в программировании на Qt и GUI.

Qt jpg image display

Процедура показа изображения работает нормально, и спасибо за это. Но я хочу отобразить изображение, когда я нажимаю на кнопку радио.

Я создал слот и подключил событие щелчка кнопки к слоту (dispImage - это мой слот). Мой слот состоит только из кода, который работает для отображения изображения (Первый ответ по этой ссылке).

Я могу скомпилировать и запустить его. Но о / п не так, как мы хотим.

При нажатии кнопки окно изображения мигает в течение секунды и исчезает.

Еще один момент, на который следует обратить внимание: я попробовал то же самое с примером windowsflags, представленным в примерах qt.

В этом примере я хочу отобразить изображение в окне предварительного просмотра, созданном нами. Даже это тоже не сработало для меня.

Пожалуйста, предоставьте мне решение.

Спасибо заранее.

Ответы [ 2 ]

4 голосов
/ 09 апреля 2010

Это происходит потому, что метод, который вы подключаете к слоту, создает все объекты, необходимые для отображения изображения в стеке, и они выходят из области видимости и уничтожаются при возврате этого метода. В связанном примере цикл обработки событий выполняется в конце метода, поэтому объекты не выходят из области видимости до выхода из программы.

Это можно исправить, сделав необходимые объекты переменными-членами класса, у которого есть время жизни приложения.

1 голос
/ 09 апреля 2010

Ответ Стю выше верен.

Если вы не понимаете, о чем он говорит, вы можете немного поближе познакомиться с C ++, прежде чем переходить к Qt. Приведенный вами пример отличается от того, что вы пытаетесь сделать. Это функция main (), чьи переменные стека не выходят из области видимости до тех пор, пока не завершится процесс (то есть, когда main () вернется). Переменные стека в методе выходят из области видимости, как только метод возвращается.

Используя пример, который вы приводите в качестве шаблона для вашего метода, вам нужно объявить объект QGraphicsView как переменную класса в заголовочном файле для вашего объекта radioslot. Это позволит ему оставаться в области действия до тех пор, пока ваш радиослот-объект не будет уничтожен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...