如何在 Qt Designer 中添加 QVideoWidget?

Posted

技术标签:

【中文标题】如何在 Qt Designer 中添加 QVideoWidget?【英文标题】:How to add a QVideoWidget in Qt Designer? 【发布时间】:2017-11-13 08:23:34 【问题描述】:

我想在蓝框(ui 图像)中插入视频,但我不知道如何插入视频文件。

我的代码在这里。 我不知道如何添加视频...只知道制作视频播放器的示例...

import sys

from PyQt5 import QtWidgets
from PyQt5 import QtGui
from PyQt5 import uic
from PyQt5 import QtCore
from PyQt5.QtCore import QDir, Qt, QUrl, pyqtSlot

from PyQt5.QtMultimedia import QMediaContent, QMediaPlayer
from PyQt5.QtMultimediaWidgets import QVideoWidget

from PyQt5.QtWidgets import (QApplication, QFileDialog, QHBoxLayout, QLabel,
        QPushButton, QSizePolicy, QSlider, QStyle, QVBoxLayout, QWidget)

dir_audience=''
dir_movie = ''
dir_export = ''
select_emotion = 'happy'

class Form(QtWidgets.QDialog):
    def __init__(self, parent=None):
        QtWidgets.QDialog.__init__(self, parent)
        self.ui = uic.loadUi("highlight_export_form.ui", self)
        self.ui.show()

        self.ui.load_audience.clicked.connect(self.load_audience_clicked)
        self.ui.load_movie.clicked.connect(self.load_movie_clicked)

        self.ui.start_recog.clicked.connect(self.start_recog_clicked)

        self.ui.radio_happy.toggled.connect(self.on_radio_button_toggled)
        self.ui.radio_surprised.toggled.connect(self.on_radio_button_toggled)

    def load_audience_clicked(self, event):
        dir_audience, _ = QFileDialog.getOpenFileName(self, "Open Audience", QDir.homePath())
        self.path_audience.setText(dir_audience)

    def load_movie_clicked(self, event):
        dir_movie, _ = QFileDialog.getOpenFileName(self, "Open Movie", QDir.homePath())
        self.path_movie.setText(dir_movie)

    def start_recog_clicked(self, event):
        self.check_1.setText("start_recognition")

    def on_radio_button_toggled(self):
        if self.radio_happy.isChecked():
            select_emotion='happy'
            self.check_3.setText(select_emotion)

        elif self.radio_surprised.isChecked():
            select_emotion='surprised'
            self.check_3.setText(select_emotion)

if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    w = Form()
    sys.exit(app.exec())

感谢您阅读我的问题。

【问题讨论】:

【参考方案1】:

Qt Designer 不会显示所有的 Qt 小部件,我们经常想通过 Qt 添加自己的小部件,因为至少有两种解决方案,第一种是创建一个插件并将其加载到 Qt Designer 中,然后其他更简单。推广小部件,后者是我将在此答案中显示的内容。

为此,您必须进行一些最低限度的更改,我不知道您在蓝色框中使用的是什么类型的小部件,但您必须将其更改为容器子菜单中的小部件类型,如图所示在下图中:

在它们之后你必须右键单击小部件并选择Promote to ...,然后会出现一个对话框,在Promoted class name部分你必须放置QVideoWidget,在Header File部分你必须放置@987654328 @,然后按添加按钮,然后按升级:

之后,您将能够在您的应用程序中使用QVideoWidget

下面link有一个例子

【讨论】:

我刚刚在 Qt 的错误跟踪平台上发布了一个建议,因为 Header file 作为将在 Python 中使用的 UI 表单文件的符号至少可以说是令人困惑。鉴于生成的 Python 模块副本粘贴了行编辑的内容,人们可以想到其中应该包含什么。但话又说回来,为什么要为应该显而易见的事情动脑筋呢。【参考方案2】:

here 的回答对我来说更清楚:

QWebKit 在 Qt 5.6 中被移除。所以 QWebView 不再可用。使用 QWebEngineView 作为替代。在 Qt Designer 中,只需在表单中添加一个 QWidget 并将其提升为 QWebEngineView(基类:QWidget,标题:QWebEngineView)。不要忘记将 webenginewidgets 添加到您的项目文件中。

【讨论】:

以上是关于如何在 Qt Designer 中添加 QVideoWidget?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Qt Designer 在菜单中插入操作?

带有 Qt Designer 的 pyqtgraph:如何将 PlotItems 添加到 GraphicsLayoutWidget

如何在 Qt Designer 中创建圆形按钮

如何使用 QPushButton 的系统主题图标——Linux 上的 Qt Designer

Pycharm 添加 Qt Designer和PyUIC

qt 关于使用qt designer创建的控件和代码中添加的控件有啥区别??