QT多进程

2023-11-17

QT多进程

sf2gis@163.com

2014年11月6日

 

1 目的:启动可执行文件。

2 原理:启动进程,并模拟命令行进行交互。

3 方法:QProcess、std::system()

3.1 QProcess

1)   启动程序:可以使用start(exe,argList)。注意:argList必须将所有单独的参数单独作为一项。

2)   交互:状态:starting,running,notrunning。信号:started(),finished()。

3)   读取输出:setReadChannel(),可以读取标准输出和标准错误输出。readAllStandardOutput()/readAllStandardError()。信号:readRead(),readReadStandOutput(),readReadStandardError()。

注意:一定要在进程start()之前进行connect()。

4)   异步控制: waitForStarted(),waitForFinished()。WaitForReadRead(),waitForBytesWriten()。

5)   在Windows下启动命令行要使用cmd.exe。

6)   快捷函数:execute():启动程序,并阻塞等待执行结束,并将输出输出到当前标准输出。

startDetached():启动程序,不等待,直接返回。

3.2 std::system(arg)

C标准库函数。

执行arg命令。阻塞进行,直至返回。

如果arg=NULL,则返回0=无命令行处理程序,否则有命令行处理程序。

    intiRtn=std::system("cmd");

 

4 示例: 

//main.cp

#include<QApplication>
#include<QProcess>
#include<qptest.h>
#include<qobject.h>
intmain(intargc,char*argv[])
{
    QApplicationa(argc,argv);
    QPTestpt;
    QStringListlstArg;
    lstArg<<"-overwrite"<<"-s_srs"<<"EPSG:4326"<<"-t_srs"<<"EPSG:32650"<<"-r"<<"near"<<"-wm"<<"20"<<"-multi"<<"-of"<<"GTiff"<<"D:\\qgis-ppt\\project\\j50.tif"<<"D:/qgis-ppt/project/j50-xx.tif";
    QProcessp;
    p.connect(&p,SIGNAL(readyRead()),&pt,SLOT(testRead()));
    p.start("gdalwarp",lstArg);
    p.waitForFinished();
    intab=0;
    returna.exec();
}
 
//qptest.cpp
#include"qptest.h"
#include<QProcess>
#include<QMessageBox>
#include<QDebug>
 
QPTest::QPTest(QObject*parent):
    QObject(parent)
{
}
 
voidQPTest::testRead()
{
    QProcess*pProces=(QProcess*)sender();
    QStringresult=pProces->readAll();
    qDebug()<<"percent:"<<result;
//    QMessageBox::warning(NULL,"",result);
}
 

//qptest.h

#ifndefQPTEST_H
#defineQPTEST_H
 
#include<QObject>
 
classQPTest:publicQObject
{
    Q_OBJECT
public:
    explicitQPTest(QObject*parent=0);
 
signals:
 
publicslots:
    voidtestRead();
 
};
 
#endif//QPTEST_H

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

QT多进程 的相关文章

  • Windows 消息循环而不是 QApplication::exec() / QApplication::processEvents()

    我是否想念任何一个Qt如果我替换功能QApplication exec 使用标准 Windows 消息循环实现 这应该可以澄清我的意思 运行事件处理的常用 Qt 方式 int main int argc char argv QApplica
  • Qt 计算和比较密码哈希

    目前正在 Qt 中为测验程序构建面向 Web 的身份验证服务 据我了解 在数据库中存储用户密码时 必须对其进行隐藏 以防落入坏人之手 流行的方法似乎是添加的过程Salt https en wikipedia org wiki Salt cr
  • 在 QtCreator 中将 OpenCV 2.3 与 Qt 结合使用

    随着 OpenCV 2 3 版本终于发布 我想在我的系统上编译并安装这个最新版本 由于我经常使用 Qt 和 QtCreator 我当然希望能够在我的 Qt 项目中使用它 我已经尝试了几种方法几个小时 但总是出现错误 第一次尝试 使用WITH
  • QTableView 中的虚拟列?

    我开始学习 Qt4 模型 视图编程 我有初学者问题 我有一个简单的应用程序 其中显示 sqlite 表QTableView class Model QtSql QSqlTableModel def init self parent None
  • MAC 上的 QT/C++ - 未设置应用程序图标

    我正在努力解决的奇怪问题 在与我的 pro QT 项目文件相同的文件夹中 我有一个 Resources myIcon png 我试图将其设置为我构建的应用程序的图标 在 OSX 上运行 我阅读了文档 它建议在 pro 文件中添加 ICON
  • Qt/c++ 随机字符串生成[重复]

    这个问题在这里已经有答案了 我正在创建一个应用程序 需要生成多个随机字符串 几乎就像一个由一定长度的 ASCII 字符组成的唯一 ID 这些字符混合有大写 小写 数字字符 有没有 Qt 库可以实现这一点 如果没有 在纯 C 中生成多个随机字
  • 如何在 C++ 和 QML 应用程序中使用 qrc?

    我在 Windows7 上用 c qnd Qt Creator QML 编写了 Qt Quick Desktop 应用程序 现在 我必须部署它 并且我需要隐藏 qml 文件和图像 意味着 将它们放入资源等中 我读到有一个很好的方法可以使用
  • QtCreator 调试暂停停在代码而不是汇编处

    如何配置 QtCreator 以便在调试并按下暂停时它会显示当前正在处理的代码 现在显示汇编 无法在任何地方找到有关此问题的答案 我使用的是 Windows 7 我在 Ubuntu 16 04 中使用 Qt Creator 4 2 2 时遇
  • Qt 创建者 + MITK (Linux)

    我正在尝试使用MITK 与 Qt Creator 我已经通过 ccmake 成功编译并使用了 VTK 和 ITK 我已经编译了 MITK超级建造模式 它下载 CTK VTK ITK 等 然后我就配置好了 我已经用 make 编译了 大约两个
  • GoQt 致命错误:QAbstractAnimation:没有这样的文件或目录

    我尝试编译 Qt 来开发桌面应用程序 我按照 Qt 网站上的官方 wiki 指南的说明进行操作 当我尝试go run示例文件夹中的示例 我收到错误 去运行 home pinkya rabbit workspace go1programs s
  • QTextEdit.find() 在 Python 中不起作用

    演示问题的简单代码 usr bin env python import sys from PyQt4 QtCore import QObject SIGNAL from PyQt4 QtGui import QApplication QTe
  • 如何使用 Qtimer 添加 1 秒延迟

    我目前有一个方法如下 void SomeMethod int a Delay for one sec timer gt start 1000 After one sec SomeOtherFunction a 这个方法实际上是一个附加到信号
  • 重定向 python 交互式帮助()

    我正在为使用 Qt 的应用程序开发交互式 python shell 但是我似乎无法获得重定向的交互式帮助 我的 python 代码中有这个 class OutputCatcher def init self self data def wr
  • 使用 Visual Studio 2013 构建 Qt 5.2.1 的静态版本

    几天来我一直在尝试使用 Visual Studio 2013 构建 Qt 的静态版本 我就是不明白我做错了什么 System Windows 7 64 位 Visual Studio 2013 仍安装 Visual Studio 2012
  • 退出 Qt 程序的正确方法?

    我应该如何退出 Qt 程序 例如在加载数据文件时 发现文件损坏 并且用户需要退出该应用程序或重新启动数据文件 我是不是该 call exit EXIT FAILURE call QApplication quit call QCoreApp
  • QFileDialog::getSaveFileName 和默认的 selectedFilter

    我有 getSaveFileName 和一些过滤器 我希望当用户打开 保存 对话框时选择其中之一 Qt 文档说明如下 可以通过将 selectedFilter 设置为所需的值来选择默认过滤器 我尝试以下变体 QString selFilte
  • 如何使QTableView类的restoreState()和saveState()正常工作?

    首先 我想说 我的问题已经在这里讨论过 并且这里是 https stackoverflow com questions 1163030 qt qtableview and horizontalheader restorestate 但答案并
  • 即使在可访问性中勾选应用程序,AXIsProcessTrustedWithOptions 也不会返回 true

    As this question https stackoverflow com questions 17693408 enable access for assistive devices programmatically on 10 9
  • Qt:测量事件处理时间

    我想测量我的应用程序中的哪些事件在主线程中需要很长时间才能执行 阻塞 GUI 或者至少是否有任何事件花费的时间超过 比如说 10 毫秒 显然 我对需要很长时间的任务使用线程和并发 但有时很难在其他线程中放入的内容和可以保留在 GUI 中的内
  • 将 gnuplot 嵌入现有 QtWidget 中

    我正在用 C 创建一个 伪 实时绘图应用程序 使用 gnuplot 作为绘图后端 我的要求之一是绘图必须位于现有窗口内 而不是有一个单独的绘图窗口 gnuplot 默认为 Gnuplot 有一个选项可以指定 Qt 小部件 ID 这似乎适合我

随机推荐

  • mac系统vim无法退出insert模式(ESC无效)

    表现 Vim 进入 Insert 模式以后 按 ESC 无法退出 解决方案 按 ctrl c
  • 电感与磁珠

    电感最重要的公式 它说明了电感的很多特性 比如 电感电流不能突变 电感的储能大小 电感的电流与电压的相位关系 还有电感的阻抗为什么是jwL 电感电流不能突变 电感电流为什么不能突变呢 来看这个公式 U等于负的L乘以di比dt Di比dt是指
  • linux上开发应用程序_如何在Linux上安装软件应用程序

    linux上开发应用程序 如何在Linux上安装应用程序 与许多操作系统一样 该问题不仅有一个答案 应用程序可以来自许多来源 几乎无法计数 每个开发团队都可以以自己认为最佳的方式交付软件 知道如何安装给出的内容是成为操作系统的真正超级用户的
  • asn1编码格式的解析过程

    本文以x509的解析为例说明asn1的编码格式的解析逻辑 x509证书的解析实际上是asn1格式的解析 这里着重说的是asn1的ber编码的解析 总的来讲 asn1格式的解析过程有三个重要的元素 一个是asn1数据本身 一个是openssl
  • vue中引用cdn中的js文件或者json的用法

    1 现在有一个js文件要放在cdn上 这个js文件的内容如下 var testArr a 1 2 我要在vue项目中使用这个变量 因为这个变量可能是经常变化的 但是不能变化一次就打包一次 所以将他放在cdn上 有使用的话直接改变cdn上的j
  • vscode运行C语言踩坑记

    前言 本文对Vscode运行C语言代码报错进行整理 重点是头文件路径正确仍然报错找不到路径的解决办法 需要注意 VScode本身不具有编译运行代码能力 所以需要先安装对应的编译环境并下载插件 已安装编译器软件的可以参考如下连接进行配置 Vi
  • Kali之Web渗透-扫描工具-Burpsuite

    在学习Burpsuit之前 我先说一下什么是代理 就是代理网络用户去取得网络信息 作为一个在浏览器和目标应用程序之间的中间人 允许你拦截 查看 修改在两个方向上的原始数据流 形象地说 它是网络信息的中转站 一般情况下 我们使用浏览器直接去连
  • 无需破解,Python这个神器帮你免费获取资源,赶紧收藏!

    球鞋那么难抢 有没有抢限量版球鞋的神器 每当限量版球鞋开售的时候 几十万人一拥而入 能抽中的却是少数 朋友圈刷到别人中标的消息 心里又羡慕又有点酸 今年DUNK推出的时候 我表弟竟然中了两双 他跟女朋友一人一双 这运气太好了吧 他跟我炫耀的
  • 拯救者R7000P(R7 4800H + RTX 2060)安装ubuntu18.04时黑屏,无法进入安装界面

    问题描述 插入启动盘选择u盘启动后能进入GNU GRUB 选择Try ubunut或Install ubuntu后黑屏或报错 无法正常安装 常见于搭载nvidia系列显卡且无核显或集显的电脑 也发生在有核显但为AMD处理器的电脑上 原因分析
  • stata-描述性统计分析和回归指令

    文章目录 1 简单描述性统计分析 2 bootstrap统计量 有置信区间 前文中提到如何将xls格式的数据读入stata并且将其转换为dta格式的数据 向stata中加载数据并且转换为dta格式之后读取 1 简单描述性统计分析 在读入数据
  • python中if __name__ == '__main__': 的解析

    python中if name main 的解析 当你打开一个 py文件时 经常会在代码的最下面看到if name main 现在就来介 绍一下它的作用 模块是对象 并且所有的模块都有一个内置属性 name 一个模块的 name 的值取决于您
  • Spring-boot 结合Thymeleaf--拦截器--文件上传

    目录 Spring boot 结合Thymeleaf 官方文档 基本介绍 Thymeleaf 是什么 Thymeleaf 的优点 Thymeleaf 的缺点 Thymeleaf 机制说明 Thymeleaf 语法 表达式 1 表达式一览 2
  • 柏睿java实习一面面经分享

    说一下list下面的类都有哪些 ArrayList和LinkedList的特点 jvm堆内存模型 jvm的垃圾回收算法都有哪些 简单描述一下它们事务的特性你对sql的优化了解多少 它有哪些方法 数据库的锁都有哪些 分别叙述下它们说一下lin
  • 在共享dll中使用mfc_实战经验:在DLL中支持多语言

    在主程序中支持多语言 在主程序中建立不同的语言资源字符串 并调用API函数SetProcessPreferredUILanguages设置当前语言就可以实现多语言特性 在DLL中支持多语言 1 因为DLL是主程序加载阶段载入到进程地址空间的
  • node调用ffmpeg转流

    ffmpeg始终是音视频领域绕不过去的一个坎 也是一个特别好的工具 虽然再node库里面有根据ffmpeg编译的库 比如 libav js和fluent ffmpeg之类 但是调用原生的ffmpeg应用也是一种方法 这边先上代码再详解 H2
  • 蚁群算法解决TSP(旅行商)问题

    文章目录 一 前言 蚁群算法的基本原理 其中的基本过程 二 状态问题 1 城市被选择的概率由距离和信息素浓度共同决定 2 信息素更新 三 整体实现 一 前言 蚁群算法 Ant Colony Optimization ACO 是一种模拟自然界
  • vmware workstation 提示程序包可能有错,错误代码 29141 & 提示不可恢复错误: (vcpu-0)...

    问题一 提示程序包可能有错 错误代码 29141 换了n个版本 vmware workstation 10 11 12 下载了n次 都提示该错误 29141 明明程序包没错啊 一开始还怀疑是我的操作系统是win 10导致的 但是看网上别人都
  • 深入理解synchronized底层原理,一篇文章就够了!

    文章目录 前言 一 synchronized的特性 1 1 原子性 1 2 可见性 1 3 有序性 1 4 可重入性 二 synchronized的用法 三 synchronized锁的实现 3 1 同步方法 3 2 同步代码块 四 syn
  • 程序员有多难?测试适不适合女孩子做?看完这篇文章你就懂了

    一 程序员压力很大 压力是相对的 这个主要是去看跟谁比 做销售压力大吗 做市场压力大吗 做运营压力大吗 做产品压力大吗 压力大吗 肯定大呀 你看那些 996 的程序员都在那泣不成声了 好不容易说出这句话 有什么压力呀 955公司的程序员在旁
  • QT多进程

    QT多进程 sf2gis 163 com 2014年11月6日 1 目的 启动可执行文件 2 原理 启动进程 并模拟命令行进行交互 3 方法 QProcess std system 3 1 QProcess 1 启动程序 可以使用start