我目前正在使用 Qt 开发媒体播放器。所需的常见功能之一是能够切换全屏。
渲染画布本质上是一个 QGLWidget(我从它继承)。它被添加到作为该媒体播放器的主窗口的应用程序窗口中。除了渲染画布,应用程序窗口还有工具栏、状态栏和其他小部件。我要实现的全屏是让渲染画布占据全屏,而其他小部件不可见。同时,我仍然可以通过按键触发事件。
我尝试将渲染画布的父级重置为 0 并调用 showFullScreen() 函数。我在应用程序窗口上调用了 hide()。这使得画布占据了预期的整个屏幕。但是,应用程序没有抓取任何按键事件。结果,我无法恢复正常。另外,画布背景在黑白之间闪烁(默认背景为白色)。
无论如何,我不认为我尝试过的方式是实现这一点的最佳方式。因为当我恢复正常时会有一些复杂的重新养育。而且整个应用程序变得难以管理,因为在全屏时会执行一些任务,例如查看 piexl 值(源是原始的)。
有人可以建议一种更好的方法来实现全屏切换吗?