首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >[Qt]QT嵌入Matlab Engine实现Matlab Cmd窗口(1)

[Qt]QT嵌入Matlab Engine实现Matlab Cmd窗口(1)

作者头像
祥知道
发布2020-03-10 16:39:56
发布2020-03-10 16:39:56
1.6K0
举报
文章被收录于专栏:祥的专栏祥的专栏

原创文章,欢迎转载。转载请注明:转载自 祥的博客

原文链接:https://cloud.tencent.com/developer/article/1596443


文章目录

代码语言:txt
复制
- @[toc]环境1.问题来源2.最终实现的测试效果3.解决思路

QT嵌入Matlab Engine实现Matlab Cmd窗口(1)环境

  • Window7 x64
  • VS2015
  • Qt5.11.3 x64
  • Matlab R2013 x64

如果不知道如何配置Matlab和C++的混合编程可以先看一下这两篇文章:

  1. VS和Matlab混合编程(调用Matlab Engine)
  2. VS和Matlab混合编程(相关API使用-进阶)

1.问题来源

因为要开发一款软件,里面需要调用Matlab Engine,接触过Matlab和C++的混合编程尤其是调用Matlab Engine的筒子们应该知道,只要调用Matlab Engine都会出现MATLAB Command Window这个进程,就是下图所示。当然我们也可以用engSetVisible( ep, false)这句代码使得这个窗口不显示。但是这有两个问题:

  1. Matlab Engine打开太慢,如果放在UI的主线程中,很容易造成软件卡死;
  2. Matlab Command Window是另外一个软件进程,我的软件无法操控。

由此引发了本文

2.最终实现的测试效果

3.解决思路

  1. 继承一个类threadMatlab继承QThread,用于开启Matlab Engine(开启后,窗口Matlab Command Window);
  2. 写一个类MatlabCmdDlg继承QDialog,用于显示Matlab Command Window
  3. MatlabCmdDlg开启线程threadMatlab,线程启动Matlab Engine,启动后向MatlabCmdDlg发送消息(启动成功),MatlabCmdDlg收到消息后,寻找Matlab Command Window的窗口句柄,将这个窗口嵌入到这个对话框中。

之后会分几个部分详细描述一下整个过程。

To be continued…

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 1.问题来源
  • 2.最终实现的测试效果
  • 3.解决思路
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档