2015-03-31 66 views
2

我正在使用Qt並使用libVlc 2.1.5版進行視頻直播。我想在vlc frame上處理鼠標按下事件。但是當我點擊vlc時,它不能拋出鼠標事件。 我試圖與libvlc + qwidget在Win64上處理鼠標事件

libvlc_video_set_mouse_input(libvlcMediaPlayer,false); 

但在VLC隱藏鼠標。 如果有人知道,請幫助我。

謝謝。

+0

'libvlc_video_set_mouse_input(libvlcMediaPlayer,false)'之前''它在控制檯上顯示鼠標信息並使用'libvlc_video_set_mouse_input(libvlcMediaPlayer,false);'它沒有在控制檯上顯示任何鼠標信息。 – 2015-04-01 04:34:15

+0

我已經使用鼠標鉤子來解決Vlc Web插件中的相同任務:http://git.videolan.org/?p=npapi-vlc.git;a=blob;f=common/win32_fullscreen.cpp;hb=HEAD - 但它有點複雜。 – RSATom 2015-04-01 04:44:27

+0

另一種可能的解決方案是使用QtQuick和我的libvlc包裝庫:https://github.com/RSATom/QmlVlc您可以查看處理WebChimera Plugin演示的鼠標事件:http://www.webchimera.org/demos/mouse_events - 它使用QmlVlc庫。您可以通過https://gitter.im/RSATom/WebChimera – RSATom 2015-04-01 04:49:48

回答

0

我在Ubuntu 16下使用了libvlc 2.2.2,並設法按照以下方式在vlc視頻區域上獲取鼠標事件(僅提供與問題相關的代碼)。在我的VideoPlayer類我有成員:

libvlc_media_player_t* vlcPlayer; 
VideoWidget* widget; 

,其中VideoWidget是我的自定義widget類。在CPP我設置libvlc_video_set_mouse_input(vlcPlayer, false);,創建widget例如,它傳遞給我的UI,當「玩」的視頻被稱爲我還通過小部件VLC libvlc_media_player_set_xwindow(vlcPlayer, widget->winId());

我定製VideoWidget類以下內容:

// header 
class VideoWidget : public QFrame 
{ 
public: 
    VideoWidget(QWidget* parent = Q_NULLPTR); 

protected: 
    void mousePressEvent(QMouseEvent* event) override; 
}; 

// cpp 
VideoWidget::VideoWidget(QWidget* parent) 
    : QFrame(parent) 
{ 
} 

void VideoWidget::mousePressEvent(QMouseEvent* event) 
{ 
    qDebug() << "mouse press"; 
    QFrame::mousePressEvent(event); 
} 

所以想法是通過傳遞給vlc的QWidget來捕獲鼠標事件。