玉兔远程控制 0.0.34
载入中...
搜索中...
未找到
ConnectDesktop.h
1// Author: Kang Lin <kl222@126.com>
2
3#ifndef __CCONNECTDESKTOP_H_2024_09_27__
4#define __CCONNECTDESKTOP_H_2024_09_27__
5
6#pragma once
7
8#include <QPoint>
9#include <QMouseEvent>
10#include <QKeyEvent>
11#include <QWheelEvent>
12#include <QMimeData>
13#include <QMessageBox>
14#if HAVE_QT6_MULTIMEDIA
15 #include <QMediaCaptureSession>
16#endif
17#if HAVE_QT6_RECORD
18 #include <QVideoFrameInput>
19 #include <QAudioBufferInput>
20 #include <QAudioBufferOutput>
21 #include <QMediaRecorder>
22 #include "ParameterRecord.h"
23#endif
24
25#include "FrmViewer.h"
26#include "Connect.h"
27
29
41class CLIENT_EXPORT CConnectDesktop : public CConnect
42{
43 Q_OBJECT
44
45public:
59 explicit CConnectDesktop(CConnecter* pConnecter,
60 bool bDirectConnection = true);
61 virtual ~CConnectDesktop() override;
62
63public Q_SLOTS:
64#if HAVE_QT6_RECORD
65 virtual int Disconnect() override;
66#endif
71 virtual void slotClipBoardChanged() = 0;
72
73private:
74 int SetConnecter(CConnecter* pConnecter);
75 int SetViewer(CFrmViewer* pView,
76 CConnecter* pConnecter, bool bDirectConnection);
77
78Q_SIGNALS:
79 void sigSetDesktopSize(int width, int height);
80 void sigServerName(const QString& szName);
81
91 void sigUpdateRect(const QRect& r, const QImage& image);
96 void sigUpdateRect(const QImage& image);
97 void sigUpdateCursor(const QCursor& cursor);
98 void sigUpdateCursorPosition(const QPoint& pos);
99 void sigUpdateLedState(unsigned int state);
100 void sigSetClipboard(QMimeData* data);
101
102public Q_SLOTS:
103 // \~chinese 以下函数在 CFrmView 线程(主线程)中调用
104 // \~english The following functions are called in the CFrmView thread(main thread)
105 virtual void slotMousePressEvent(QMouseEvent* event, QPoint pos);
106 virtual void slotMouseReleaseEvent(QMouseEvent* event, QPoint pos);
107 virtual void slotMouseMoveEvent(QMouseEvent* event, QPoint pos);
108 virtual void slotWheelEvent(QWheelEvent* event, QPoint pos);
109 virtual void slotKeyPressEvent(QKeyEvent *event);
110 virtual void slotKeyReleaseEvent(QKeyEvent *event);
111
112protected:
117 virtual int WakeUp();
118 // \~chinese 以下函数在 Connect 线程(后台线程)中调用
119 // \~english The following functions are called in the Connect thread(background thread)
120 virtual void mousePressEvent(QMouseEvent *event);
121 virtual void mouseReleaseEvent(QMouseEvent *event);
122 virtual void mouseMoveEvent(QMouseEvent *event);
123 virtual void wheelEvent(QWheelEvent *event);
124 virtual void keyPressEvent(QKeyEvent *event);
125 virtual void keyReleaseEvent(QKeyEvent *event);
126
127 // QObject interface
128public:
129 virtual bool event(QEvent *event) override;
130
131#if HAVE_QT6_RECORD
133private Q_SLOTS:
134 // connect menu
135 virtual void slotRecord(bool bRecord);
136 virtual void slotRecordPause(bool bPause);
137 // connect CFrmView
138 void slotRecordVideo(const QImage& img);
139Q_SIGNALS:
140 void sigRecordVideo(bool bRecord);
141private:
142 void RecordVideo(QRecordVideoEvent *event);
143 CParameterRecord* m_pParameterRecord;
144
145protected:
146 QVideoFrameInput m_VideoFrameInput;
147 QAudioBufferInput m_AudioBufferInput;
148 QAudioBufferOutput m_AudioBufferOutput;
149 QMediaRecorder m_Recorder;
150#endif
151#if HAVE_QT6_MULTIMEDIA
152 QMediaCaptureSession m_CaptureSession;
153#endif
154};
155
156#endif // __CCONNECTDESKTOP_H_2024_09_27__
远程桌面连接接口。它由协议插件实现。
void sigUpdateRect(const QImage &image)
Notify the CFrmView update image
void sigUpdateRect(const QRect &r, const QImage &image)
通知视图,图像更新
virtual void slotClipBoardChanged()=0
当剪切板发生改变时调用
连接接口。它由协议插件实现。 它默认启动一个定时器来开启一个非 Qt 事件循环(就是普通的循环处理)。 详见: Connect()、 slotTimeOut()、 OnProcess() 。 当然,它仍...
Definition Connect.h:45
virtual int Disconnect()
断开
Definition Connect.cpp:89
连接者应用接口。
Definition Connecter.h:62
用于显示从 CConnectDesktop 输出的图像,和向 CConnectDesktop 发送键盘、鼠标事件。
Definition FrmViewer.h:49