在qt5中主界面有菜單欄,選擇菜單欄的選項之后,想讓該選項對應的窗口界面在當前主界面窗口中。主界面窗口中動態生成 新窗口,並在new的時候指定本類為父類。代碼如下:
Eight* eight;//新窗口類名為Eight,此句實際在主窗口的頭文件中 eight=new Eight(this);//在主窗口中動態生成指定窗口,並指定本窗口為起父窗口
上面代碼運行之后,會發現eight窗口順利出現在主窗口內。但是!但是此時發現,主窗口的菜單欄此時只能看到,但是不可用!
解決方案:在主窗口中添加一個 新的窗體控件,並設定新窗體控件的大小,即設定你想讓出現在主窗體的子窗體的顯示區域。然后指定創建子窗體的時候,指定該窗體控件為其父窗體。
代碼如下:
Eight *eight; eight=new Eight(ui->widget);//設置主窗體中的 窗體控件為新窗體父窗體
編譯運行,發現新窗體出現在主窗體區域內,但是主窗體的菜單欄依然可用。問題解決。
另一種解決方案:模式。新窗口出現在主窗體內,但是通過 模式 設置,可以使父窗口的一切控件可用。這個也是不足的地方。如果主窗體本身有內容,就會亂。