失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > linux qt应用程序全屏 QT中MDI应用程序中更改子窗口大小或是全屏显示子窗口的方法...

linux qt应用程序全屏 QT中MDI应用程序中更改子窗口大小或是全屏显示子窗口的方法...

时间:2024-06-10 22:22:02

相关推荐

linux qt应用程序全屏 QT中MDI应用程序中更改子窗口大小或是全屏显示子窗口的方法...

1、QT中窗口部件QWidget成员函数showFullScreen();是用于将窗口部件全屏显示。

但是他只对窗口模式的部件有用。子窗口的特征是 Qt::SubWindow,不是独立的窗口。因此对其调用showFullScreen()无效。

通过对对子窗口调 用:setWindowFlags(Qt::Dialog);或setWindowFlags(Qt::Window);将其设为窗口模式后,即可调用 showFullScreen();进行全屏显示了。

2、子窗口大小属性是父窗口管理的,可以通过取得QMdiSubWindow来设置:

void MainWindow::createViewDataImpl()

{

//ViewDataImpl,自己定义的窗口,属于Dialog类型

ViewDataImpl *win = new ViewDataImpl(this);

mdiArea->addSubWindow(win);

win->show();

mdiArea->activeSubWindow()->resize(700,200); //关键句子

}

3、相对于子窗口的全屏显示方法,不得不提的是子窗口退出全屏的方法。

MFC中,子窗口退出全屏的方法简单直接,直接调用SetWindowPos()函数将子窗口显示到预定的位置即可。

QT中,直接使用move和resize对窗口定位是没有效果的。需要先将子窗口设位非窗口模式。之后再将窗口移到理想位置。

即先调用setWindowFlags(Qt::Dialog);或者setWindowFlags(Qt::SubWindow);在调用move和resize函数。

若果退出全屏时,调用showNormal(),再调setWindowFlags(Qt::SubWindow)。

这有两个问题:1)showNormal()也是只对顶级窗口有效。2)可以考虑先调用showNormal()将窗口设为原来大小,在将窗口设为子窗口模式。但这样窗口回到父窗口之中也不会显示原来的大小。

如果觉得《linux qt应用程序全屏 QT中MDI应用程序中更改子窗口大小或是全屏显示子窗口的方法...》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。