QT调用VNC并放到一个窗口中

1.VNC资源下载

本例中的这个VNC可以从以下连接中下载,也可以从官网上下载,应该都是类似的。

https://download.csdn.net/download/xiaoding_ding/89549092

下载完成后放到项目的release文件夹中

2.程序中引用

2.1在主界面中放置一个按钮,命名为vnc_connect

2.2 通过按钮转到槽,修改mainwindow.cpp

里面的内容如下: 

    QProcess program(this);
    QString cmd ="VNC-Viewer-7.6.1-Windows-64bit.exe";
    program.startDetached(cmd);

    Sleep(200);
    QString classname = "os::Window::Dialog";//窗口的类名
    QString windowname = "RealVNC Viewer";//窗口标题名
    WId winId = (WId)FindWindow((LPCWSTR)classname.unicode(),(LPCWSTR)windowname.unicode());
    qDebug()<<winId;
    QWindow *window = QWindow::fromWinId(winId);

    QWidget *widget = QWidget::createWindowContainer(window);
    widget->show();

 2.3增加头文件

增加图示中的四个

3.运行效果

点击按钮就是这种效果

 4.问题说明

将这个窗口关闭后,再次点击“打开VNC”按钮后,会显示空白

这是因为程序中的process是独立执行的。关闭这个窗口,VNC进程还在。

在任务管理中杀死这个进程后,就可以重新调用了。

5.窗口句柄的获得

5.1打开visual studio,点击搜索,搜索功能spy

5.2打开vnc和spy,从搜索中拖动那个2中的标靶到VNC标题栏中。

 5.3在程序中进行对应

 6.总结

中间总是有各种各样的问题,本例提供了一种探索。中间有问题还是可以多搜索一下相关文章。

Qt一个跨平台的 C++ 应用程序开发框架,VNC(Virtual Network Computing)是一种远程桌面协议。将 QtVNC 结合,可以开发出具有远程桌面功能的跨平台应用程序。 ### 使用方法 - **安装依赖库**:需要安装 Qt 开发环境以及 VNC 相关的库,如 LibVNCServer 等。 - **创建 Qt 项目**:使用 Qt Creator 创建一个新的 Qt 项目。 - **集成 VNC 功能**:在 Qt 项目中调用 VNC 库的 API 实现远程桌面功能。 ### 开发示例 以下是一个简单的 QtVNC 结合的开发示例,实现一个简单的远程桌面客户端: ```cpp #include <QApplication> #include <QWidget> #include <QLabel> #include <QVBoxLayout> #include <rfb/rfbclient.h> // VNC 回调函数 static void updateFrameBuffer(rfbClient* client, int x, int y, int w, int h) { // 处理帧缓冲区更新 } int main(int argc, char *argv[]) { QApplication a(argc, argv); // 创建主窗口 QWidget window; window.setWindowTitle("VNC Client"); // 创建标签用于显示远程桌面 QLabel label(&window); QVBoxLayout layout(&window); layout.addWidget(&label); // 初始化 VNC 客户端 rfbClient* client = rfbGetClient(8, 3, 4); if (!rfbInitClient(client, &argc, argv)) { return 1; } // 设置回调函数 client->UpdateFB = updateFrameBuffer; // 连接到 VNC 服务器 if (!rfbConnect(client)) { return 1; } // 显示窗口 window.show(); // 进入 Qt 事件循环 int result = a.exec(); // 关闭 VNC 连接 rfbClientCleanup(client); return result; } ``` ### 相关技术资料 - **官方文档**:Qt 官方文档提供了详细的 Qt 开发指南和 API 参考,LibVNCServer 官方文档提供了 VNC 库的使用说明。 - **开源项目**:可以参考一些开源的 QtVNC 结合的项目,如 TigerVNC 等。 - **在线教程**:在网上可以找到很多关于 QtVNC 结合的教程和文章,如 CSDN、博客园等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

leecheni

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值