2010-04-09 6 views
1

Qt 및 GUI 프로그래밍에 순진합니다. 이미지를 표시하기 위해 주어진Qt는 새 창에서 이미지를 표시합니다.

Qt jpg image display

절차는 잘 작동하고를 제공해 주셔서 감사합니다. 그러나 라디오 버튼을 클릭하면 이미지를 표시하고 싶습니다.

나는 슬롯을 만들었고 버튼 클릭 이벤트를 슬롯에 연결했습니다 (dispImage는 내 슬롯 임). 내 슬롯은 이미지를 표시하는 코드만으로 구성됩니다 (이 링크의 첫 번째 대답).

나는 그것을 컴파일하고 실행할 수있다. 그러나 o/p는 우리가 원하는대로 아닙니다.

버튼을 클릭하면 이미지 창이 초 동안 깜박이며 사라집니다.

한 가지 더 공유 할 점은 qt 예제에있는 windowsflags 예제와 동일하게 시도한 것입니다.

이 예제에서는 우리가 만든 미리보기 창에 이미지를 표시하고 싶습니다. 이것조차 나를 위해 일하지 않습니다.

제게 해결책을 제공해주십시오.

미리 감사드립니다.

답변

4

슬롯에 연결하는 방법이 스택에 이미지를 표시하는 데 필요한 모든 객체를 작성하고 범위를 벗어나서 해당 메소드가 반환 될 때 파괴된다는 이유로 이러한 상황이 발생합니다. 연결된 예제에는 메서드의 끝에서 실행되는 이벤트 루프가 있으므로 개체가 프로그램이 끝날 때까지 범위를 벗어나지 않습니다.

응용 프로그램 수명이있는 클래스의 멤버 변수를 필요한 개체로 만들어이 문제를 해결할 수 있습니다.

1

위의 스투의 대답은 정확합니다.

그가 무슨 말을하는지 이해하지 못한다면, Qt로 뛰어 들기 전에 C++에 대해 좀 더 익숙해지고 싶을 것입니다. 당신이 인용하는 예는 당신이하려는 것과 다릅니다. main()이 반환 할 때까지 프로세스가 종료 될 때까지 스택 변수가 범위를 벗어나지 않는 main() 함수입니다. 메소드의 스택 변수는 메소드가 리턴하자마자 범위를 벗어난다.

예를 들어 메서드에 대한 템플릿으로 인용하면 라디오 실체 개체의 헤더 파일에 클래스 변수로 QGraphicsView 개체를 선언해야합니다. 이렇게하면 라디오 슬롯 개체가 파괴 될 때까지 범위가 유지됩니다.

관련 문제