Seite 1 von 1

Phonon verhindert mouseDoubleClickEvent?

Verfasst: 30. November 2010 20:15
von listeman
Hallo Leute,

seit letztem Wochenende habe ich ein seltsames Problem (zumindest finde ich das seltsam^^):
Mit einem Mal bekomme ich kein mouseDoubleClickEvent mehr, wenn ich auf einen Frame/... doppelklicke, das ein Phonon-VideoWidget enthält. Dort bekomme ich einfach nichts... dieses Problem ließ sich auch problem reproduzieren, hier ist mal ein ganz einfaches Code-Beispiel, das alle Events ausgiebt:

mainwindow.h

Code: Alles auswählen

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QtGui/QMainWindow>

#include <QtDebug>
#include <QFrame>
#include <QHBoxLayout>
#include <QWidget>
#include <QEvent>

#include <phonon/VideoWidget>
#include <phonon/MediaObject>

class MainWindow : public QMainWindow {
   Q_OBJECT

public:
   MainWindow(QWidget *parent = 0);
   ~MainWindow();

protected:
   bool event(QEvent *);
};

#endif // MAINWINDOW_H
mainwindow.cpp

Code: Alles auswählen

#include "mainwindow.h"

MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) {

   Phonon::MediaObject *mediaObject = new Phonon::MediaObject;
   Phonon::VideoWidget *videoWidget = new Phonon::VideoWidget;
   Phonon::createPath(mediaObject,videoWidget);

   QFrame *frame = new QFrame;
   frame->setStyleSheet("background-color: black");
   frame->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);

   QHBoxLayout *frameLayout = new QHBoxLayout;
   frameLayout->addWidget(videoWidget);
   frame->setLayout(frameLayout);

   QHBoxLayout *layout = new QHBoxLayout;
   layout->addWidget(frame);

   QWidget *centralWidget = new QWidget;
   centralWidget->setLayout(layout);
   this->setCentralWidget(centralWidget);

}

bool MainWindow::event(QEvent *event) {
   qDebug() << "MainWindow Event:" << event->type();
}

bool Phonon::VideoWidget::event(QEvent *event) {
   qDebug() << "VideoWidget Event:" << event->type();
}

MainWindow::~MainWindow() {
}
main.cpp

Code: Alles auswählen

#include <QtGui/QApplication>
#include "mainwindow.h"

int main(int argc, char *argv[]) {
   QApplication a(argc, argv);
   MainWindow w;
   w.show();
   return a.exec();
}
Ein Klick oder Doppelklick auf das VideoWidget, beide melden kein Event. Wenn ich jedoch auf den Rahmen doppelklicke (dort, wohin sich bedingt durch den Layout-Rahmen das VideoWidget nicht erstreckt), dort bekomme ich sowohl MouseButtonDblClick (4), MouseButtonPress (2), als auch MouseButtonRelease (3) bei einem Doppelklick gemeldet.
Hat sich da was bei Qt geändert, oder ist dies ein Problem in meinem System?

Jedenfalls ergibt dies für mich absolut keinen Sinn... :?:

Verfasst: 1. Dezember 2010 12:36
von franzf
Implementierst du echt VideoWidget::event()?!? Also auch in deinem Programm? Dann wunder dich nicht.
Willst du erfahren was im VideoWidget für events ankommen und evtl. auch darauf reagieren oder sogar Verhalten ändern, implementier in MainWindow den eventFilter, installier ihn im VideoWidget. Fertig.

Wenn nichts hilft, bitte genauere Beschreibung und Originalcode :)