Hide Mouse after Timeout in Qt GUI

This commit is contained in:
Florian Märkl 2019-11-20 17:55:46 +01:00
parent 4f60ceb1d4
commit a3ae9d4f74
No known key found for this signature in database
GPG key ID: 125BC8A5A6A1E857
3 changed files with 36 additions and 4 deletions

View file

@ -59,6 +59,8 @@ class AVOpenGLWidget: public QOpenGLWidget
AVOpenGLFrameUploader *frame_uploader; AVOpenGLFrameUploader *frame_uploader;
QThread *frame_uploader_thread; QThread *frame_uploader_thread;
QTimer *mouse_timer;
public: public:
static QSurfaceFormat CreateSurfaceFormat(); static QSurfaceFormat CreateSurfaceFormat();
@ -69,8 +71,15 @@ class AVOpenGLWidget: public QOpenGLWidget
AVOpenGLFrame *GetBackgroundFrame() { return &frames[1 - frame_fg]; } AVOpenGLFrame *GetBackgroundFrame() { return &frames[1 - frame_fg]; }
protected: protected:
void mouseMoveEvent(QMouseEvent *event) override;
void initializeGL() override; void initializeGL() override;
void paintGL() override; void paintGL() override;
private slots:
void ResetMouseTimeout();
public slots:
void HideMouse();
}; };
#endif // CHIAKI_AVOPENGLWIDGET_H #endif // CHIAKI_AVOPENGLWIDGET_H

View file

@ -23,6 +23,9 @@
#include <QOpenGLExtraFunctions> #include <QOpenGLExtraFunctions>
#include <QOpenGLDebugLogger> #include <QOpenGLDebugLogger>
#include <QThread> #include <QThread>
#include <QTimer>
#define MOUSE_TIMEOUT_MS 1000
//#define DEBUG_OPENGL //#define DEBUG_OPENGL
@ -96,6 +99,11 @@ AVOpenGLWidget::AVOpenGLWidget(VideoDecoder *decoder, QWidget *parent)
frame_uploader = nullptr; frame_uploader = nullptr;
frame_uploader_thread = nullptr; frame_uploader_thread = nullptr;
frame_fg = 0; frame_fg = 0;
setMouseTracking(true);
mouse_timer = new QTimer(this);
connect(mouse_timer, &QTimer::timeout, this, &AVOpenGLWidget::HideMouse);
ResetMouseTimeout();
} }
AVOpenGLWidget::~AVOpenGLWidget() AVOpenGLWidget::~AVOpenGLWidget()
@ -110,6 +118,23 @@ AVOpenGLWidget::~AVOpenGLWidget()
delete frame_uploader_context; delete frame_uploader_context;
} }
void AVOpenGLWidget::mouseMoveEvent(QMouseEvent *event)
{
QOpenGLWidget::mouseMoveEvent(event);
ResetMouseTimeout();
}
void AVOpenGLWidget::ResetMouseTimeout()
{
unsetCursor();
mouse_timer->start(MOUSE_TIMEOUT_MS);
}
void AVOpenGLWidget::HideMouse()
{
setCursor(Qt::BlankCursor);
}
void AVOpenGLWidget::SwapFrames() void AVOpenGLWidget::SwapFrames()
{ {
QMutexLocker lock(&frames_mutex); QMutexLocker lock(&frames_mutex);

View file

@ -126,13 +126,11 @@ void StreamWindow::LoginPINRequested(bool incorrect)
void StreamWindow::ToggleFullscreen() void StreamWindow::ToggleFullscreen()
{ {
if(isFullScreen()) if(isFullScreen())
{
setCursor(Qt::ArrowCursor);
showNormal(); showNormal();
}
else else
{ {
setCursor(Qt::BlankCursor);
showFullScreen(); showFullScreen();
if(av_widget)
av_widget->HideMouse();
} }
} }