[Qt]QT嵌入Matlab Engine实现Matlab Cmd窗口(1)
原文链接: https://blog.csdn.net/humanking7/article/details/86040954
文章目录
-
@[toc]
- 环境
- 1.问题来源
- 2.最终实现的测试效果
- 3.解决思路
QT嵌入Matlab Engine实现Matlab Cmd窗口(1) 环境
-
Window7 x64
-
VS2015
-
Qt5.11.3 x64
-
Matlab R2013 x64
如果不知道如何配置
Matlab和C++的混合编程
可以先看一下这两篇文章:
1.问题来源
因为要开发一款软件,里面需要调用
Matlab Engine
,接触过
Matlab和C++的混合编程
尤其是调用
Matlab Engine
的筒子们应该知道,只要调用
Matlab Engine
都会出现
MATLAB Command Window
这个进程,就是下图所示。当然我们也可以用
engSetVisible( ep, false)
这句代码使得这个窗口不显示。但是这有两个问题:
-
Matlab Engine
打开太慢,如果放在UI的主线程
中,很容易造成软件卡死; -
Matlab Command Window
是另外一个软件进程,我的软件无法操控。
由此引发了本文
2.最终实现的测试效果
3.解决思路
-
继承一个类
threadMatlab
继承QThread
,用于开启Matlab Engine
(开启后,窗口Matlab Command Window
); -
写一个类
MatlabCmdDlg
继承QDialog
,用于显示Matlab Command Window
; -
MatlabCmdDlg
开启线程threadMatlab
,线程启动Matlab Engine
,启动后向MatlabCmdDlg
发送消息(启动成功
),MatlabCmdDlg
收到消息后,寻找Matlab Command Window
的窗口句柄,将这个窗口嵌入到这个对话框中。
之后会分几个部分详细描述一下整个过程。
To be continued…
- 文章目录
- 1.问题来源
- 2.最终实现的测试效果
- 3.解决思路