如何在Qt Designer中添加QVideoWidget?

7

我想在蓝色框(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())

感谢阅读我的问题。
3个回答

25

Qt Designer不能显示所有Qt小部件,我们经常希望通过Qt添加自己的小部件,至少有两种解决方案,第一种是创建插件并将其加载到Qt Designer中,另一种更简单。方法是促进小部件,后者是我在这篇答案中要展示的。

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

enter image description here

然后,您必须右键单击该小部件并选择提升为...,然后会出现一个对话框,在Promoted class name部分中,您必须放置QVideoWidget,在Header File部分中,您必须放置PyQt5.QtMultimediaWidgets,然后按添加按钮,然后再按提升按钮:

enter image description here

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

在以下链接中提供了一个示例


我刚在Qt的错误跟踪平台上发布了一个建议,因为将“Header file”作为用于Python中的UI表单文件的符号表示实在是令人困惑。考虑到生成的Python模块会复制粘贴行编辑器的内容,人们可能会想到应该在其中放置什么内容。但是,为什么要费力思考那些本应明显的事情呢? - rbaleksandar

0

这里的回答对我更清晰明了:

在Qt 5.6中移除了QWebKit,因此不再提供QWebView。请使用QWebEngineView作为替代品。在Qt Designer中,只需向表单添加QWidget并将其提升为QWebEngineView(基类:QWidget,头文件:QWebEngineView)。别忘了在项目文件中添加webenginewidgets。


0
  • 类似问题:想要将QWebEngineView添加到Qt Designer
    • 以便后续使用PySide6导入和使用由Qt Designer导出的.ui文件
  • 解决方案:添加QWidget,然后将其Promoted toQWebEngineView
    • 步骤:
      • 将新的QWidget拖入主UI(窗口)中
      • 右键单击QWidget -> Promoted to
      • 新弹出窗口,输入
        • 基类名称:QWidget
        • 提升类名称:QWebEngineView
        • 头文件:PySide6.QtWebEngineWidgets
          • == 父类
        • 全局包含:未选中
        • -> 截图
          • enter image description here
      • 点击:Add
      • 点击:Promote

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接