在使用Qt开发的媒体播放器中切换全屏

时间:2011-12-06 22:44:45

标签: c++ qt media-player fullscreen qglwidget

我目前正在使用Qt开发媒体播放器。所需的一个常见功能是能够切换全屏。

渲染画布本质上是一个QGLWidget(我将其子类化)。它被添加到应用程序窗口,该窗口是此媒体播放器的主窗口。除了渲染画布外,应用程序窗口还有工具栏,状态栏和其他小部件。我要实现的全屏是使渲染画布占据整个屏幕而不显示其他小部件。同时,我仍然可以通过按键触发事件。

我尝试将渲染画布的父级重置为0并调用showFullScreen()函数。我在应用程序窗口中调用了hide()。这使得画布占据了预期的整个屏幕。但是,该应用程序并没有抓住任何关键的新闻事件。结果,我无法恢复正常。此外,画布背景在黑白之间闪烁(默认背景为白色)。

无论如何,我不认为我尝试的方式是实现这一目标的最佳方式。因为当我切换回正常时会有一些复杂的重新表现。并且整个应用程序变得难以管理,因为在全屏时会执行一些任务,例如查看piexl值(源是原始的)。

有人能建议更好的方法来实现全屏切换吗?

1 个答案:

答案 0 :(得分:0)

您使用的是哪个版本?

我建议你一个必须测试的解决方案。 当你想要全屏时,尝试复制你的内容(如果视频在一个小部件中,打开一个新的QWidget并将内容复制到新的小部件),理论上你有两个具有相同内容的小部件,但你不应该隐藏和减少任何东西的大小。 告诉我它是否适合你。

其次,看看这些帖子,可能有用:

最后,再读一遍,你可能错过了一些东西:/ http://doc.qt.io/qt-5/qwidget.html#showFullScreen

告诉我,我是否误解了某些事情,或者是否有什么(以及什么)有所帮助。