博客
关于我
关于如何在Qt Creater 中调用已经写好的 C++ 程序
阅读量:720 次
发布时间:2019-03-21

本文共 1732 字,大约阅读时间需要 5 分钟。

如何在 Qt Creator 中调用已写好的 C++ 程序?——一个 OpenCV 开发者的 Qt 界面尝试

作为一名 OpenCV 开发者,我尝试在 Qt 应用中集成已有的 OpenCV 函数。然而,这个过程并非一帆风顺,最终还是不得不临时使用 VS 来编写相关部分代码。这一做法虽然能快速实现需求,但也暴露出了一些问题。

项目背景与需求我的目标是为 OpenCV 函数添加 Qt 界面。为了实现这一目标,我需要在 Qt 应用中调用一个已有的 OpenCV 程序。这段程序用于调用相机,并通过 exe 文件进行数据传输和处理。因此,我需要确保在 Qt 项目中正确调用与该程序相关的 exe 文件。

解决方案探索为了在 Qt 应用中启动外部程序,我在应用的核心逻辑中添加了两种方法:

第一种方法是使用 QProcess::startDetached。这种方法可以在后台启动目标程序,并且不会影响到主程序的运行。其代码实现如下:

QProcess::startDetached("D:/Qt_Unit/QT_Documentation/OpencvTest0/OpenCVTest.exe");

这种方式能够正确启动 OpenCV 调用相机的程序。

第二种方法是借助 cmd 脚本通过 taskkill 指令终止进程。这种方法需要以下步骤:

  • 创建一个包含 cmd 指令的字符串列表:
  • QStringList Stop;Stop << "/c" << "taskkill" << "-f" << "-im" << "OpenCVTest.exe";
    1. 创建一个 QProcess 对象并启动 cmd 程序:
    2. QProcess process;process.start("cmd.exe", Stop);process.waitForFinished();process.close();

      这种方法可以确保即使在使用 QProcess::startDetached 启动的外部程序仍在运行时,能够在合适的时候正确终止它。

      完整代码示例为了更详细地展示解决方案,我提供了完整的 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_Documentation/OpencvTest0/OpenCVTest.exe"); }); 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;}

      该代码实现了两个功能:

    3. 启动 OpenCV 程序;
    4. 通过 cmd 脚本终止相关进程。
    5. 总结通过以上方法,我成功在 Qt 应用中集成并管理外部 C++ 程序。在实际开发中,需要确保所调用程序的路径正确并对进程管理有足够的了解。如果你有类似的项目需求,希望这篇指南对你有所帮助。

    转载地址:http://kbwgz.baihongyu.com/

    你可能感兴趣的文章
    MySQL5.7.19-win64安装启动
    查看>>
    mysql5.7.19安装图解_mysql5.7.19 winx64解压缩版安装配置教程
    查看>>
    MySQL5.7.37windows解压版的安装使用
    查看>>
    mysql5.7免费下载地址
    查看>>
    mysql5.7命令总结
    查看>>
    mysql5.7安装
    查看>>
    mysql5.7性能调优my.ini
    查看>>
    MySQL5.7新增Performance Schema表
    查看>>
    Mysql5.7深入学习 1.MySQL 5.7 中的新增功能
    查看>>
    Webpack 之 basic chunk graph
    查看>>
    Mysql5.7版本单机版my.cnf配置文件
    查看>>
    mysql5.7的安装和Navicat的安装
    查看>>
    mysql5.7示例数据库_Linux MySQL5.7多实例数据库配置
    查看>>
    Mysql8 数据库安装及主从配置 | Spring Cloud 2
    查看>>
    mysql8 配置文件配置group 问题 sql语句group不能使用报错解决 mysql8.X版本的my.cnf配置文件 my.cnf文件 能够使用的my.cnf配置文件
    查看>>
    MySQL8.0.29启动报错Different lower_case_table_names settings for server (‘0‘) and data dictionary (‘1‘)
    查看>>
    MYSQL8.0以上忘记root密码
    查看>>
    Mysql8.0以上重置初始密码的方法
    查看>>
    mysql8.0新特性-自增变量的持久化
    查看>>
    Mysql8.0注意url变更写法
    查看>>