玉兔远程控制 0.0.34
载入中...
搜索中...
未找到
FrmViewer.h
1// Author: Kang Lin <kl222@126.com>
2
3#ifndef FRMVIEWER_H
4#define FRMVIEWER_H
5
6#pragma once
7
8#include <QMutex>
9#include <QImage>
10#include <QSharedPointer>
11#include "client_export.h"
12
13#ifdef USE_FROM_OPENGL
14
15 #include "FrmViewerOpenGL.h"
16 #define CFrmViewer CFrmViewerOpenGL
17
18#else
19
20#include <QWidget>
21#include <QSettings>
22#include <QMutex>
23
25
48class CLIENT_EXPORT CFrmViewer : public QWidget
49{
50 Q_OBJECT
51 Q_PROPERTY(double ZoomFactor READ GetZoomFactor WRITE slotSetZoomFactor)
52
53public:
54 explicit CFrmViewer(QWidget *parent = nullptr);
55 virtual ~CFrmViewer() override;
56
61 enum class ADAPT_WINDOWS {
62 Disable = 0,
64 Auto = 1,
65 Original = 2,
67 OriginalCenter = 3,
69 Zoom = 4,
71 ZoomToWindow = 5,
73 KeepAspectRationToWindow = 6,
75 };
76 Q_ENUM(ADAPT_WINDOWS)
77 ADAPT_WINDOWS GetAdaptWindows();
78
86 double GetZoomFactor() const;
87
88 QSize GetDesktopSize();
89
90 enum LED_STATE{
91 Unknown = -1,
92 ScrollLock = 1,
93 NumLock = 1 << 1,
94 CapsLock = 1 << 2,
95 };
96 Q_ENUM(LED_STATE)
97
98public Q_SLOTS:
99 void slotSetAdaptWindows(CFrmViewer::ADAPT_WINDOWS aw = ADAPT_WINDOWS::Original);
100 int slotSetZoomFactor(double newZoomFactor);
101
102 /*================== Internal calls ==================*/
109 void slotSetDesktopSize(int width, int height);
114 void slotSetName(const QString& szName);
120 void slotUpdateRect(const QRect& r, const QImage& image);
121 void slotUpdateRect(const QImage& image);
126 void slotUpdateCursor(const QCursor& cursor);
131 void slotUpdateCursorPosition(const QPoint& pos);
132 void slotUpdateLedState(unsigned int state);
133 void slotSystemCombination();
134 void slotConnected();
135
136Q_SIGNALS:
137 void sigMousePressEvent(QMouseEvent* event, QPoint pos);
138 void sigMouseReleaseEvent(QMouseEvent* event, QPoint pos);
139 void sigMouseMoveEvent(QMouseEvent* event, QPoint pos);
140 void sigMouseMoveEvent(QMouseEvent* event);
141 void sigWheelEvent(QWheelEvent *event, QPoint pos);
142 void sigKeyPressEvent(QKeyEvent *event);
143 void sigKeyReleaseEvent(QKeyEvent *event);
144
145 // Please use CConnecter::sigServerName
146 void sigServerName(const QString &szName);
147
153 void sigViewerFocusIn(QWidget* pView);
154
155 // QWidget interface
156protected:
157 virtual void paintEvent(QPaintEvent *event) override;
158
159 virtual void focusInEvent(QFocusEvent *event) override;
160 virtual void focusOutEvent(QFocusEvent *event) override;
161
162 virtual void mousePressEvent(QMouseEvent *event) override;
163 virtual void mouseReleaseEvent(QMouseEvent *event) override;
164 virtual void mouseMoveEvent(QMouseEvent *event) override;
165 virtual void wheelEvent(QWheelEvent *event) override;
166 virtual void keyPressEvent(QKeyEvent *event) override;
167 virtual void keyReleaseEvent(QKeyEvent *event) override;
168
169private:
170 QImage m_Desktop;
171 QSize m_DesktopSize;
172
173 ADAPT_WINDOWS m_AdaptWindows;
174 double m_dbZoomFactor;
175
176 int ReSize(int width, int height);
177 void paintDesktop();
178 int TranslationMousePoint(QPointF inPos, QPointF &outPos);
179 QRectF GetAspectRationRect();
180
181public:
182 virtual QImage GrabImage(int x = 0, int y = 0, int w = -1, int h = -1);
183
184public Q_SLOTS:
185 void slotRecordVideo(bool bRecord);
186Q_SIGNALS:
187 void sigRecordVideo(const QImage& img);
188private:
189 bool m_bRecordVideo;
190};
191
192#endif // #ifdef USE_FROM_OPENGL
193
194#endif // FRMVIEWER_H
用于显示从 CConnectDesktop 输出的图像,和向 CConnectDesktop 发送键盘、鼠标事件。
Definition FrmViewer.h:49
ADAPT_WINDOWS
窗口适配枚举常量
Definition FrmViewer.h:61
void sigViewerFocusIn(QWidget *pView)
视图获得焦点
录制视频线程
Definition RecordVideo.h:29