2
我正在使用Qt並使用libVlc 2.1.5版進行視頻直播。我想在vlc frame上處理鼠標按下事件。但是當我點擊vlc時,它不能拋出鼠標事件。 我試圖與libvlc + qwidget在Win64上處理鼠標事件
libvlc_video_set_mouse_input(libvlcMediaPlayer,false);
但在VLC隱藏鼠標。 如果有人知道,請幫助我。
謝謝。
我正在使用Qt並使用libVlc 2.1.5版進行視頻直播。我想在vlc frame上處理鼠標按下事件。但是當我點擊vlc時,它不能拋出鼠標事件。 我試圖與libvlc + qwidget在Win64上處理鼠標事件
libvlc_video_set_mouse_input(libvlcMediaPlayer,false);
但在VLC隱藏鼠標。 如果有人知道,請幫助我。
謝謝。
我在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來捕獲鼠標事件。
'libvlc_video_set_mouse_input(libvlcMediaPlayer,false)'之前''它在控制檯上顯示鼠標信息並使用'libvlc_video_set_mouse_input(libvlcMediaPlayer,false);'它沒有在控制檯上顯示任何鼠標信息。 – 2015-04-01 04:34:15
我已經使用鼠標鉤子來解決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
另一種可能的解決方案是使用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