0


qt嵌入并运行外部exe

由于项目需要,要实现将一个外部exe运行在qt的窗口中。下面记录一下过程:
首先就是在qt中创建一个新项目
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
由于我这里没有用到画布,所以没有勾选Generate form
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

然后就会自动生成一个可运行的代码
在这里插入图片描述

然后将我下边的代码替换粘贴进去

#include"mainwindow.h"#include<QApplication>#include<QDebug>#include<QWidget>#include<QProcess>#include<QWindow>#include<Windows.h>intmain(int argc,char*argv[]){
    QApplication a(argc, argv);
 
    QWidget *w =new QWidget;
    QProcess m_process;
    m_process.start("D:/homework/Blender/build_windows_x64_vc17_Release/bin/Debug/blender.exe",QStringList()<<"");// 【1】可执行exe的路径if(!m_process.waitForFinished(-1)){qDebug()<<"--------";}
 
    WId wid =(WId)FindWindow(L"GHOST_WindowClass",NULL);// 【2】需要嵌入的exe的界面的类名称
    QWindow *m_window =QWindow::fromWinId(wid);
    m_window->setFlags(m_window->flags()| Qt::CustomizeWindowHint | Qt::WindowTitleHint);//这边可以设置一下属性
    QWidget *m_widget  =QWidget::createWindowContainer(m_window, w);
    m_widget->setMinimumSize(500,500);//窗口大小
    w->show();return a.exec();}

注意我标注的【1】和【2】,需要替换成自己可执行的exe的路径和类名称。
关于界面的类名称,如果是自己写的可执行exe,那就写自己定义的类名称。如果用的是第三方exe,则用vs的spy++可以检测到类名称。
如果有下载Visual Studio,则在下边的路径中可以找到该检测软件。如果没有找到,百度也可以直接找到spy++的下载。
在这里插入图片描述

双击打开,点击【查找窗口】
在这里插入图片描述

然后打开自己要嵌入的exe,拖动【查找程序工具】到自己exe窗口。

在这里插入图片描述

然后就可以看到类名,复制到自己的qt代码中
在这里插入图片描述

然后保存运行,就可以看到效果啦!
在这里插入图片描述

大功告成!

注意在qt运行前,一定要打开自己要嵌入的exe文件,然后才可以在qt的程序窗口中看到自己嵌入的exe。否则的话qt运行出的程序窗口将是空白的,里边没有界面内容显示。。

标签: qt ui 开发语言

本文转载自: https://blog.csdn.net/changyana/article/details/128436097
版权归原作者 ChangYan. 所有, 如有侵权,请联系我们删除。

“qt嵌入并运行外部exe”的评论:

还没有评论