在qt5中主界面有菜单栏,选择菜单栏的选项之后,想让该选项对应的窗口界面在当前主界面窗口中。主界面窗口中动态生成 新窗口,并在new的时候指定本类为父类。代码如下:
Eight* eight;//新窗口类名为Eight,此句实际在主窗口的头文件中 eight=new Eight(this);//在主窗口中动态生成指定窗口,并指定本窗口为起父窗口
上面代码运行之后,会发现eight窗口顺利出现在主窗口内。但是!但是此时发现,主窗口的菜单栏此时只能看到,但是不可用!
解决方案:在主窗口中添加一个 新的窗体控件,并设定新窗体控件的大小,即设定你想让出现在主窗体的子窗体的显示区域。然后指定创建子窗体的时候,指定该窗体控件为其父窗体。
代码如下:
Eight *eight; eight=new Eight(ui->widget);//设置主窗体中的 窗体控件为新窗体父窗体
编译运行,发现新窗体出现在主窗体区域内,但是主窗体的菜单栏依然可用。问题解决。
另一种解决方案:模式。新窗口出现在主窗体内,但是通过 模式 设置,可以使父窗口的一切控件可用。这个也是不足的地方。如果主窗体本身有内容,就会乱。