【问题标题】:Toggle full screen in a media player developed using Qt在使用 Qt 开发的媒体播放器中切换全屏
【发布时间】:2015-12-11 15:15:44
【问题描述】:

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

渲染画布本质上是一个 QGLWidget(我继承自它)。它被添加到作为该媒体播放器的主窗口的应用程序窗口中。除了渲染画布,应用程序窗口还有工具栏、状态栏和其他小部件。我要实现的全屏是让渲染画布占据全屏,而其他小部件不可见。同时,我仍然可以通过按键触发事件。

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

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

谁能提出一个更好的方法来实现全屏切换?

【问题讨论】:

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


    【解决方案1】:

    你用的是哪个版本?

    我向您推荐一个您必须测试的解决方案。 当你想全屏时,尝试复制你的内容(如果视频在一个小部件中,打开一个新的 QWidget 并将内容复制到新的小部件),理论上你会有 2 个具有相同内容的小部件,但你不应该隐藏和缩小任何东西的大小。 告诉我它是否对你有用。

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

    最后,再读一遍,你可能漏掉了什么:/ http://doc.qt.io/qt-5/qwidget.html#showFullScreen

    如果我误解了什么,或者有什么(以及什么)有帮助,请告诉我。

    【讨论】:

    • 我认为您的建议对我来说很有意义。我正在尝试在我的应用程序中实现这一点。我会让你知道事情的进展。
    • 我已经使用您建议的方法实现了全屏切换。到目前为止效果很好。非常感谢。@Max13
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-31
    • 2015-05-16
    • 2020-06-14
    • 2015-07-10
    • 2012-12-25
    • 1970-01-01
    相关资源
    最近更新 更多