2014-01-14 7 views
1

약간의 질문이 있습니다. QMainWindow에 button이 있습니다. 그 버튼을 클릭하면 기존의 QMainWindow를 열고 싶습니다. (세부 사항 : QWT Plot을 사용하여 창을 열고 싶습니다. QWt의 refreshtest 프로젝트 예제를 의미합니다.)QMainWindow의 기존 QMainWindow 열기

그래서 기존의 Window on open 버튼을 원합니다. 지금까지 새로운 QMainWindow를 열 수 있었지만 프로젝트 새로 고침에서 MainWindow를 보려면 어떻게해야합니까?

void MyWindow::on_pushButton_1_clicked() 
{ 
    QMainWindow *mw = new QMainWindow(); 
    mw->show(); 
} 

답변

0

이 코드를 사용하면 메서드 범위를 벗어난 후 누수 포인터가 표시됩니다.

이유는 show() 메서드가 차단되지 않기 때문입니다. 이벤트 루프 큐에 이벤트를 게시합니다. Qt 이벤트 루프가 "그 용량을 확보"할 때마다 비동기 방식으로 처리됩니다.

이 문제를 해결할 수있는 몇 가지 옵션이 있습니다.

1) Qt는 부모/자식 관계

QMainWindow *mw = new QMainWindow(this); 
            ^^^^ 

2) 확인 "MW"MyWindow

m_mw.show(); 

의 클래스 부재와 MyWindow 생성자를 구축합니다.

3) 스마트 포인터를 사용

QSharedPointer<QMainWindow> mw = QSharedPointer<QMainWindow>(new QMainWindow());