es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

QVideoWidget no recibe el evento de arrastrar y soltar (comportamiento extraño)

Quiero reproducir un medio en dropEvent de un QVideoWidget. Sé cómo reproducirlo, mi problema es que QVideoWidget no recibe el evento de caída como otros widgets. Me pregunto si esto es un error o si me estoy perdiendo algo.

Todo está bien y se llaman los tres eventos:

import sys
from PySide6.QtCore import QSize
from PySide6.QtMultimediaWidgets import QVideoWidget
from PySide6.QtWidgets import QApplication, QWidget

class MyWidget(QWidget):
    def init(self,args):
        super().init(args)

    self.setAcceptDrops(True)
    self.setMinimumSize(QSize(600,400))

def dragEnterEvent(self, event):
    print(event)
    event.accept()

def dragMoveEvent(self, event):
    print(event)
    event.accept()

def dropEvent(self, event):
    print(event)


if name == "main":
    app = QApplication([])
    widget = MyWidget()
    widget.show()
    sys.exit(app.exec())

**Pero cuando uso el mismo código con un `QVideoWidget`, `dropEvent` no es llamado:**

import sys
from PySide6.QtCore import QSize
from PySide6.QtMultimediaWidgets import QVideoWidget
from PySide6.QtWidgets import QApplication, QWidget

class MyWidget(QVideoWidget):
    def init(self,args):
        super().init(args)

    self.setAcceptDrops(True)
    self.setMinimumSize(QSize(600,400))

def dragEnterEvent(self, event):
    print(event)
    event.accept()

def dragMoveEvent(self, event):
    print(event)
    event.accept()

def dropEvent(self, event):
    print(event)


if name == "main":
    app = QApplication([])
    widget = MyWidget()
    widget.show()
    sys.exit(app.exec())

P.D.: No sé por qué, pero en el último código, dropEvent funciona en la barra de título. Puedo subir un GIF si es necesario.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Suena como si estuviera faltando algo. Es posible que QVideoWidget no acepte eventos de arrastrar y soltar por defecto, así que es posible que tenga que habilitarlo. Puede hacer esto ajustando la propiedad acceptDrops a Verdadero.

    También es posible que QVideoWidget no reciba los eventos de arrastrar y soltar porque no se encuentra en la posición correcta. Puede intentar establecer la propiedad pos en la posición correcta.

    Si estas soluciones no funcionan, es posible que se trate de un error. Puede intentar presentar un informe de error con el equipo de Qt para ver si pueden ayudarlo.

Comments are closed.