玉兔远程控制
0.1.0-bate11
Toggle main menu visibility
载入中...
搜索中...
未找到
Src
BackendDesktop.h
1
// Author: Kang Lin <kl222@126.com>
2
3
#pragma once
4
#include <QPoint>
5
#include <QMouseEvent>
6
#include <QKeyEvent>
7
#include <QWheelEvent>
8
#include <QMimeData>
9
#include <QMessageBox>
10
#if HAVE_QT6_MULTIMEDIA
11
#include <QMediaCaptureSession>
12
#endif
13
#if HAVE_QT6_RECORD
14
#include <QVideoFrameInput>
15
#include <QAudioBufferInput>
16
#include <QAudioBufferOutput>
17
#include <QMediaRecorder>
18
#include "ParameterRecord.h"
19
#endif
20
21
#include "FrmViewer.h"
22
#include "OperateDesktop.h"
23
24
class
QRecordVideoEvent
;
25
37
class
PLUGIN_EXPORT CBackendDesktop :
public
CBackend
38
{
39
Q_OBJECT
40
public
:
41
explicit
CBackendDesktop(
COperateDesktop
*pOperate =
nullptr
);
42
virtual
~CBackendDesktop();
43
44
public
Q_SLOTS:
45
#if HAVE_QT6_RECORD
46
virtual
int
Stop
()
override
;
47
#endif
52
virtual
void
slotClipBoardChanged
() = 0;
53
54
private
:
55
int
SetConnect(
COperateDesktop
* pOperate);
56
int
SetViewer
(
CFrmViewer
* pView);
57
58
Q_SIGNALS:
59
void
sigSetDesktopSize(
int
width,
int
height);
60
void
sigServerName(
const
QString& szName);
61
71
void
sigUpdateRect
(
const
QRect& r,
const
QImage& image);
76
void
sigUpdateRect
(
const
QImage& image);
77
void
sigUpdateCursor(
const
QCursor& cursor);
78
void
sigUpdateCursorPosition(
const
QPoint& pos);
79
void
sigUpdateLedState(
unsigned
int
state);
80
void
sigSetClipboard(QMimeData* data);
81
82
public
Q_SLOTS:
83
// \~chinese 以下函数在 CFrmView 线程(主线程)中调用
84
// \~english The following functions are called in the CFrmView thread(main thread)
85
virtual
void
slotMousePressEvent(QMouseEvent* event, QPoint pos);
86
virtual
void
slotMouseReleaseEvent(QMouseEvent* event, QPoint pos);
87
virtual
void
slotMouseMoveEvent(QMouseEvent* event, QPoint pos);
88
virtual
void
slotWheelEvent(QWheelEvent* event, QPoint pos);
89
virtual
void
slotKeyPressEvent(QKeyEvent *event);
90
virtual
void
slotKeyReleaseEvent(QKeyEvent *event);
91
virtual
void
slotInputMethodEvent(QInputMethodEvent* event);
92
93
protected
:
94
// \~chinese 以下函数在后台线程中调用
95
// \~english The following functions are called in the Backend thread(background thread)
96
virtual
void
mousePressEvent(QMouseEvent *event) = 0;
97
virtual
void
mouseReleaseEvent(QMouseEvent *event) = 0;
98
virtual
void
mouseMoveEvent(QMouseEvent *event) = 0;
99
virtual
void
wheelEvent(QWheelEvent *event) = 0;
100
virtual
void
keyPressEvent(QKeyEvent *event) = 0;
101
virtual
void
keyReleaseEvent(QKeyEvent *event) = 0;
102
virtual
void
InputMethodEvent(QInputMethodEvent* event) = 0;
103
104
// QObject interface
105
public
:
106
virtual
bool
event(QEvent *event)
override
;
107
108
#if HAVE_QT6_RECORD
110
private
Q_SLOTS:
111
// menu
112
virtual
void
slotRecord(
bool
bRecord);
113
virtual
void
slotRecordPause(
bool
bPause);
114
// CFrmView
115
void
slotRecordVideo(
const
QImage& img);
116
Q_SIGNALS:
117
void
sigRecordVideo(
bool
bRecord, qreal nRate = 0);
118
private
:
119
void
RecordVideo(
QRecordVideoEvent
*event);
120
CParameterRecord
* m_pParameterRecord;
121
122
protected
:
123
QVideoFrameInput m_VideoFrameInput;
124
QAudioBufferInput m_AudioBufferInput;
125
QAudioBufferOutput m_AudioBufferOutput;
126
QMediaRecorder m_Recorder;
127
#endif
128
#if HAVE_QT6_MULTIMEDIA
129
QMediaCaptureSession m_CaptureSession;
130
#endif
131
};
CBackendDesktop::sigUpdateRect
void sigUpdateRect(const QRect &r, const QImage &image)
通知视图,图像更新
CBackendDesktop::SetViewer
int SetViewer(CFrmViewer *pView)
定义
BackendDesktop.cpp:161
CBackendDesktop::sigUpdateRect
void sigUpdateRect(const QImage &image)
Notify the CFrmView update image
CBackendDesktop::slotClipBoardChanged
virtual void slotClipBoardChanged()=0
当剪切板发生改变时调用
CBackend::Stop
virtual int Stop()
停止
定义
Backend.cpp:103
CBackend::CBackend
CBackend(COperate *pOperate=nullptr, bool bStopSignal=true)
CBackend
CFrmViewer
用于显示从 CConnectDesktop 输出的图像,和向 CConnectDesktop 发送键盘、鼠标事件。
定义
FrmViewer.h:48
COperateDesktop
远程桌面操作接口
定义
OperateDesktop.h:69
CParameterRecord
定义
ParameterRecord.h:13
QRecordVideoEvent
定义
BackendDesktop.cpp:21
作者:康林 (kl222@126.com)
版权所有(c) 康林工作室 保留所有权力