关于如何在Qt Creater 中调用已经写好的 C++ 程序

关于如何在Qt Creater 中调用已经写好的 C++ 程序

事情的起因:
我是写OpenCV的,后来要加Qt界面,就搞了这么一个东西(也就是为什么Qt明明可以写OpenCv我还非要跑去VS写的原因)

前言&条件
我链接的OpenCV程序是调用相机,这里要链接exe文件。一般情况下生成的exe文件都在程序文件夹下的Debug目录下。

程序
1、

QProcess::startDetached("D:\\Qt_Unit\\QT_Datement\\OpencvTest0\\OpenCVTest.exe",QStringList());

QProcess::startDetached(“目标文件路径”,QStringList());
这条语句可以运行exe文件
2、

        QStringList Stop;
        Stop<<"/c"<<"taskkill"<<"-f"<<"-im"<<"OpenCVTest.exe";
        QProcess process;
        process.start("cmd.exe",Stop);
        process.waitForFinished();
        process.close();

这些可以关掉那个打开的exe文件(通过startDetached打开的外部程序不会随着主程序结束而结束)(在网上模仿的其他业界前辈的杀进程操作)

总代码(Qt)
我不是在main.cpp里加的,那样也行得通,不过。。。

#include "widget.h"
#include "ui_widget.h"
#include 
#include 
#include 
Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    connect (ui->pushButton,&QPushButton::clicked,[=](){
        QProcess::startDetached("D:\\Qt_Unit\\QT_Datement\\OpencvTest0\\OpenCVTest.exe",QStringList());
    });
    connect(ui->pushButton_2,&QPushButton::clicked,[=](){
        QStringList Stop;
        Stop<<"/c"<<"taskkill"<<"-f"<<"-im"<<"OpenCVTest.exe";
        QProcess process;
        process.start("cmd.exe",Stop);
        process.waitForFinished();
        process.close();
    });
}
Widget::~Widget()
{
    delete ui;
}

结语
也差不多了,之前一直找不到类似的贴子,希望读者少踩坑吧。

你可能感兴趣的:(qt,c++,opencv,exe,ui)