覆盖Phonon.VideoWidget的最佳实践是什么?



在过去的几天里,我试图找到一个有效的解决方案来覆盖声子。VideoWidget与一个简单的QLabel。遗憾的是,我没能找到一个有效的解决方案。

这是我尝试过的:

  1. 育儿。我尝试了"正常"的育儿方式,将QLabel定位到VideoWidget。结果:标签根本不显示

  2. QStackedLayout。这里建议:http://www.qtcentre.org/threads/31490-Overlaying-Widgets-on-top-of-VideoWidget。结果:标签显示,但总是在视频后面

  3. GraphicsView。我在这里尝试了很多,因为它看起来是最有希望的,但最后CPU负载太高,所以视频无法播放。将视图的视口设置为QGLWidget并不能解决这个问题。

  4. 结果:覆盖工作,但由于CPU负载高而无法播放视频。
  5. 子类化VideoWidget。正如这里提到的:https://wiki.qt.io/Overlay_widget_for_Phonon_VideoWidget。我用同样的方法来创建叠加。除了moveEvent之外,这工作得很好。如果在完成移动小部件之后重新对齐标签,看起来就不太好了。是否有一种方法来更新这已经当移动VideoWidget?

我真的希望有人能在这里帮助我(我使用PySide,但在C++的例子也应该工作)或给我一个指针在哪里看。请让我知道如果我应该分享一些代码片段复制。

你能做的最好的就是创建一个漂浮在视频小部件上方的新窗口。例如,创建一个无父的QLabel,并确保它与主窗口同步移动。

label = new QLabel();
label->setWindowFlags(Qt::ToolTip | Qt::FramelessWindowHint);

在你的QMainWindow子类中,重写moveEvent和resizeEvent,并做一些类似的事情:

label->move(mapToGlobal(QPoint(0, height() - label->height())));

这使标签在左下角,改变它,以满足您的需要。

相关内容

  • 没有找到相关文章

最新更新