2014-01-14 92 views
1

我有一個小問題 - 我有QMainWindow與按鈕。點擊那個按鈕,我想要打開一個現有的QMainWindow(細節:我想用QWT Plot打開一個窗口,我的意思是QWt的refreshtest項目示例。)從QMainWindow打開現有的QMainWindow

所以我想要打開現有的Window按鈕。至於我能夠打開新的QMainWindow,但我能做些什麼來看看項目refreshtest的MainWindow?

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

回答

0

有了這個代碼,你會留下方法的範圍後得到一個漏水的指針。

的原因是,該節目()方法是不會阻止。它會將事件發佈到事件循環隊列中。只要Qt事件循環「獲取容量」,它就會以異步方式處理。

您有幾種選擇來解決這一問題。

1)Qt的父/子關係

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

2)使 「MW」 的mywindow的

m_mw.show(); 

一個類的成員,並構造它在mywindow的構造函數。

3)使用智能指針

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