QT5之 新窗口设为主窗口的子窗口显示后,主窗口菜单栏不可用解决方案

在qt5中主界面有菜单栏,选择菜单栏的选项之后,想让该选项对应的窗口界面在当前主界面窗口中。主界面窗口中动态生成 新窗口,并在new的时候指定本类为父类。代码如下:

Eight* eight;//新窗口类名为Eight,此句实际在主窗口的头文件中
eight=new Eight(this);//在主窗口中动态生成指定窗口,并指定本窗口为起父窗口

上面代码运行之后,会发现eight窗口顺利出现在主窗口内。但是!但是此时发现,主窗口的菜单栏此时只能看到,但是不可用!

解决方案:在主窗口中添加一个 新的窗体控件,并设定新窗体控件的大小,即设定你想让出现在主窗体的子窗体的显示区域。然后指定创建子窗体的时候,指定该窗体控件为其父窗体。

代码如下:

Eight *eight;
eight=new Eight(ui->widget);//设置主窗体中的 窗体控件为新窗体父窗体

编译运行,发现新窗体出现在主窗体区域内,但是主窗体的菜单栏依然可用。问题解决。

另一种解决方案:模式。新窗口出现在主窗体内,但是通过 模式 设置,可以使父窗口的一切控件可用。这个也是不足的地方。如果主窗体本身有内容,就会乱。

原文地址:https://www.cnblogs.com/wangzhizhen/p/8642899.html