2012-03-18 99 views
0

如何在同一時間顯示兩個窗口?那麼我有一個主窗口,然後當我按下一個按鈕,我加載一個插件創建並返回一個qwidget,並將其設置爲中心部件setCentralWidget(),但我的應用程序崩潰。如果我沒有錯,這無論如何將只顯示一個窗口同時 。從插件在Qt中同時顯示2個窗口

代碼:

QWidget* PlPlugin::initPltter() { 

    plotter = new QWidget(); 
    plotter->resize(200,300); 
    plotter->setWindowTitle("mypl"); 
    plotter->show(); 

    return plotter; 
} 

在我的應用我做:

setCentralWidget(plotter->initPlotter()); 
+0

錯誤顯示什麼?與qt小工具它是所有關於父母,你應該能夠通過父窗口顯示第二個陰謀 – bgs 2012-03-18 18:52:41

+0

你想在主窗口內顯示兩個_windows_,或兩個_widgets_?在第一種情況下,不要將繪圖儀小部件設置爲中央小部件。在第二種情況下,您應該添加一個帶佈局的容器小部件(或QSplitter,QDockwidget等),將繪圖儀添加爲佈局的小孩。在這種情況下,不要在窗口小部件上調用show()。 – 2012-03-18 19:49:34

回答

0

儘量不要調整大小或顯示它。它不必要,如果它將成爲主窗口的中心部件。

此外,從您的示例中沒有任何暗示您試圖顯示兩個窗口。你正在做的是創建另一個小部件並將其設置爲主窗口的子項。做一個或另一個:創建小部件並直接顯示它,或者創建它並將它放在另一個下面。

+0

請你提供一些代碼 – develoops 2012-03-18 18:56:01

0

在main.cpp中顯示你的主窗口的孩子,對於第二個小部件做到這一點:

QWidget* PlPlugin::initPltter() { 

    plotter = new QWidget(); 
    plotter->resize(200,300); 
    plotter->setWindowTitle("mypl"); 
    plotter->show(); 

    return plotter; 
} 

而且做到這一點

setCentralWidget(plotter->initPlotter()); 

它讓你得到主窗口和widget中單獨的「窗口」