Phonon verhindert mouseDoubleClickEvent?

Alles rund um die Programmierung mit Qt
Antworten
listeman
Beiträge: 74
Registriert: 19. Mai 2009 13:54
Kontaktdaten:

Phonon verhindert mouseDoubleClickEvent?

Beitrag 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... :?:
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag 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 :)
Antworten