본문 바로가기
QT and Symbian

QT PostMessage 대체 사용 방법 고민

by leo21c 2015. 12. 30.
SMALL

<QT PostMessage 대체 사용 방법 고민>

기존 프로그램에서 메뉴를 닫을 때(FormClose())가 진행 되면 현재 Dialog를 Delete 할 수 없기 때문에 PostMessage를 이용해서 MainMenuForm에서 ExitForm() 함수가 작동하도록 해서 Event() 흐름이 끝나고 사용한 Dialog(Form)을 삭제하게 했습니다.

그러나 현재 QtTex3D에서는 Dilaog의 X버튼을 눌러 닫을 때 CloseEvent()함수를 오버로딩해서 사용하고 있는데 위의 내용과 마찬가지로 Dialog를 삭제할 수는 없습니다. MainMenuDialog에서 이런 문제점이 있었는데 이 때 QTimer::singleShot(50, mainMenuDialog, SLOT(exitDialog())); 를 이용하면 될 것 같습니다.
QTimer::singleShot은 기존 Thread와 별도록 새로운 Thread로 진행되기 때문에 기존 Event가 모두 처리되고 일정 시간이 지나면 exitDialog()함수를 호출하기 때문에 정상적으로 Dialog를 삭제할 수 있을 것으로 판단됩니다.

이 점을 이용해서 기존에 Menu처리를 할 때 Dialog 삭제에 문제가 없는제 재확인 부탁합니다. 메모리 누수가 발생하지 않도록 null point 에러가 발생하지 않도록 주의 부탁합니다.

우선 MainMenu와 Palette는 내가 관련 소스를 보고 수정이 필요하면 수정을 할 생각입니다. VectorDailog의 속도 문제로 이 것은 삭제하지 않고 MainMenu가 종료될 때 삭제하도록 처리하겠습니다

LIST