QT:控件VLC播放视频时,如何获得鼠标事件
原来以为不可能,实际上很简单。
- 控件
重载鼠标事件。
class VlcWidget : public QWidget
{
public:explicit VlcWidget(QWidget *parent = nullptr);~VlcWidget();protected:void mouseMoveEvent(QMouseEvent *e) override;void mousePressEvent(QMouseEvent *e) override;void mouseReleaseEvent(QMouseEvent *e) override;};
- 播放设置
增加这样两句:
void MainWindow::OpenRtspStream()
{if(m_vlcplayer != nullptr){libvlc_media_player_stop(m_vlcplayer);libvlc_media_player_release(m_vlcplayer);m_vlcplayer = nullptr;}libvlc_media_t*media = libvlc_media_new_location(m_instence, RTSP_STREAM);m_vlcplayer = libvlc_media_player_new_from_media(media);libvlc_media_release(media);//这两句是关键。libvlc_video_set_mouse_input(m_vlcplayer, 0);libvlc_video_set_key_input(m_vlcplayer, 0);//设置窗口句柄MediaShowWindow(m_vlcplayer);//播放MediaPlayerPlay();
}