ubuntu qt 运行命令行

文章目录

    • 1.C++实现
    • 2.python实现

1.C++实现

下面是封装好的C++头文件,直接调用run_cmd_fun()即可。

#ifndef GET_CMD_H
#define GET_CMD_H#endif // GET_CMD_H
#include <iostream>
#include<QString>
using namespace std;//system("gnome-terminal --window -e 'bash -c \"pwd;ls;exec bash\"' --tab -e 'bash -c \"pwd; exec bash\"'");
QString win_cmd = "gnome-terminal --window -e 'bash -c \"";  // 运行窗口的命令
QString tab_cmd = " --tab -e 'bash -c \""; //运行标签的命令
QString pause_cmd = ";exec bash\"'";  //终端等待的命令
QString source_path = "source /opt/ros/noetic/setup.bash ;"; //添加环境变量
QString Qcmd = "";void run_cmd_fun(QString cmd1)
{ //get one cmdQcmd = "";Qcmd.append(win_cmd);Qcmd.append(source_path);Qcmd.append(cmd1);Qcmd.append(pause_cmd);string cmd = Qcmd.toStdString();cout << cmd << endl;system(cmd.c_str());
}void run_cmd_fun(QString cmd1, QString cmd2, int input_time=1)
{ //get two cmd//The time setQcmd = "";QString pause_t = "sleep ";pause_t.append(QString::number(input_time));pause_t.append(";");//The  first cmd setQcmd.append(win_cmd);Qcmd.append(cmd1);Qcmd.append(pause_cmd);//The  second cmd setQcmd.append(tab_cmd);Qcmd.append(pause_t);Qcmd.append(cmd2);Qcmd.append(pause_cmd);//The  cm1 + cm2 --> string cmdstring cmd = Qcmd.toStdString();system(cmd.c_str());
}void run_cmd_fun(QString cmd1, QString cmd2, QString cmd3, int input_time=1)
{ //get three cmdQcmd = "";QString pause_t = "sleep ";pause_t.append(QString::number(input_time));pause_t.append(";");//The  first cmd setQcmd.append(win_cmd);Qcmd.append(cmd1);Qcmd.append(pause_cmd);//The  second cmd setQcmd.append(tab_cmd);Qcmd.append(pause_t);Qcmd.append(cmd2);Qcmd.append(pause_cmd);//The  third cmd setQcmd.append(tab_cmd);Qcmd.append(pause_t);Qcmd.append(pause_t);Qcmd.append(cmd3);Qcmd.append(pause_cmd);//The  cmd1 + cmd2 + cmd3 --> cmdstring cmd = Qcmd.toStdString();system(cmd.c_str());
}void run_cmd_fun(QString cmd1, QString cmd2, QString cmd3, QString cmd4, int input_time=1)
{ //get four cmdQcmd = "";//The time setQString pause_t = "sleep ";pause_t.append(QString::number(input_time));pause_t.append(";");//The first cmd setQcmd.append(win_cmd);Qcmd.append(cmd1);Qcmd.append(pause_cmd);//The second cmd setQcmd.append(tab_cmd);Qcmd.append(pause_t);Qcmd.append(cmd2);Qcmd.append(pause_cmd);//The third cmd setQcmd.append(tab_cmd);Qcmd.append(pause_t);Qcmd.append(pause_t);Qcmd.append(cmd3);Qcmd.append(pause_cmd);//The fourth cmd setQcmd.append(tab_cmd);Qcmd.append(pause_t);Qcmd.append(pause_t);Qcmd.append(pause_t);Qcmd.append(cmd4);Qcmd.append(pause_cmd);// cmd1 + cmd2 + cmd3 + cmd4 = cmdstring cmd = Qcmd.toStdString();system(cmd.c_str());
}

注意:想要生成双击直接运行的程序,需要添加:

QMAKE_LFLAGS += -no-pie

在这里插入图片描述

补充切换不同页面;

ui->stackedWidget->setCurrentIndex(3);

2.python实现

直接调用:run_cmd([“roscore”,“rostopic list”], 2)

openvino_path = "source /opt/intel/openvino/bin/setupvars.sh;"  # 添加的一些虚拟环境
ros_path = "source ~/.bashrc;"+openvino_path win_cmd = "gnome-terminal --window -e 'bash -c \""+ros_path
tab_cmd = " --tab -e 'bash -c \""+ros_path
end_cmd = ";exec bash\"'"def run_win(cmd):# 运行的第一个窗口终端cmd = win_cmd+cmd+end_cmdreturn cmddef run_tab(cmd, t):# 运行的标签终端delay_t = "sleep {};".format(str(t))cmd = tab_cmd+delay_t+cmd+end_cmdreturn cmddef run_cmd(cmds, t = 2):cmd  = run_win(cmds[0])for i in range(1, len(cmds)):cmd = cmd + run_tab(cmds[i], t*i)print(cmd)os.system(cmd)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/631698.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【JavaEE进阶】 关于应用分层

文章目录 &#x1f38b;序言&#x1f343;什么是应⽤分层&#x1f38d;为什么需要应⽤分层&#x1f340;如何分层(三层架构)&#x1f384;MVC和三层架构的区别和联系&#x1f333;什么是高内聚低耦合⭕总结 &#x1f38b;序言 在我们进行项目开发时我们如果一股脑将所有代码都…

嵌入式软件分层的思想

文章目录 一、分层的目的二、分层逻辑图三、分层的架构图四、分层的优缺点五、举例六、 优化 一、分层的目的 “高内聚&#xff0c;低耦合的思想”&#xff0c;表示在设计和开发软件系统时&#xff0c;应该使模块之间的关系更加紧密&#xff0c;同时避免模块之间的依赖性过于紧…

【JavaEE】文件操作: File 类的用法和 InputStream, OutputStream 的用法

目录 1. File 概述 1.1 File的属性 1.2 File的构造方法 1.3 File的方法 2.读文件 2.1 InputStream 概述 2.2 FileInputStream 概述 2.3 正确打开和关闭文件的方式 2.4 不同方式读取文件代码示例 2.4 另一种方法:利用 Scanner 进行字符读取 3.写文件 3.1 OutputStre…

如何在苹果手机上进行文件管理

摘要 苹果手机没有像安卓系统那样内置文件管理器&#xff0c;但是可以通过使用克魔开发助手来实现强大的文件管理功能。本文介绍了如何使用克魔开发助手在电脑上管理和传输苹果手机的文件。 引言 很多朋友都在使用苹果手机&#xff0c;但是当需要查看手机中的文件时&#xf…

解析链动2+1:从零到一助力企业快速增长

每天五分钟讲解商业模式&#xff0c;大家好我是模式策划啊浩 在数字化时代&#xff0c;引流已成为企业发展的重要基石。然而&#xff0c;传统的引流模式已难以满足现代企业的需求。此时&#xff0c;链动21商业模式以其独特的优势&#xff0c;成为了商业引流的新趋势。本文将深…

java常见面试题:如何使用Java进行Spring Boot框架开发?

Spring Boot是一个用于创建独立、生产级别的基于Spring的项目的框架。它简化了Spring应用的初始化和开发过程&#xff0c;提供了一个快速的启动和开发平台。 以下是使用Java进行Spring Boot框架开发的详细步骤&#xff1a; 添加Spring Boot依赖 首先&#xff0c;你需要在项目…

version-polling一款用于实时检测 web 应用更新的 JavaScript 库

为了解决后端部署之后&#xff0c;如何通知用户系统有新版本&#xff0c;并引导用户刷新页面以加载最新资源的问题。 实现原理 1.使用 Web Worker API 在浏览器后台轮询请求页面&#xff0c;不会影响主线程运行。 2.命中协商缓存&#xff0c;对比本地和服务器请求响应头etag字…

取消lodash.throttle中的默认执行完最后一次函数

我的场景: 我有一个列表,我考虑用户连续点击删除的情况&#xff0c;如果用户连续点击&#xff0c;可能会导致数据库中的数据被删除了&#xff0c;但是我还需要刷新数据列表才能反应到页面上&#xff0c;可是这时候用户又点击了同一条数据的删除按钮多次&#xff0c;导致发起了…

第二讲_HarmonyOS应用创建和运行

HarmonyOS应用创建和运行 1. 创建一个HarmonyOS应用2. 运行新项目2.1 创建本地模拟器2.2 启动本地模拟器2.3 在本地模拟器运行项目 1. 创建一个HarmonyOS应用 打开DevEco Studio&#xff0c;在欢迎页单击Create Project&#xff0c;创建一个新工程。 选择创建Application应用。…

spakr 提交任务

当前集群支持3中集群管理 Standalone&#xff08;spak框架自身拥有能力&#xff09;Apache Mesos Hadoop YARN Kubernetes 使用/spark-submit脚本提交任务&#xff0c;脚本后面可以接参数 ./bin/spark-submit \--class <main-class> \--master <master-url> \--de…

运用位运算管理状态标志—以SDWebImage为例

在看SDWebImage图片加载库的时候&#xff0c;看到了一个位运算的高级使用&#xff0c;之前对位运算深入了解只是在datalab中&#xff0c;但也只是处于“学会”的阶段&#xff0c;本篇介绍位运算在实践中管理状态的使用&#xff0c;希望能打开你的思路&#xff0c;对你有所帮助 …

服务器运维小技巧(一)——如何进行远程协助

服务器运维中经常会遇到一些疑难问题&#xff0c;需要安全工程师&#xff0c;或者其他大神远程协助。很多人会选择使用todesk或者向日葵等一些远控软件。但使用这些软件会存在诸多问题&#xff1a; 双方都需要安装软件&#xff0c;太麻烦需要把服务器的公钥/密码交给对方不知道…

【计算机硬件】2、指令系统、存储系统和缓存

文章目录 指令系统计算机指令的组成计算机指令执行过程指令的寻址方式&#xff08;怎么样找到操作数&#xff1f;&#xff09;1、顺序寻址2、跳跃寻址 指令操作数的寻址方式&#xff08;怎么样找到操作数&#xff1f;&#xff09;1、立即寻址方式2、直接寻址方式3、间接寻址方式…

Unity文字游戏开发日志(1)—— 打字机效果

作者是一名OIer,因为兴趣&#xff0c;想在寒假期间开发一款文字游戏的demo。 本博客仅用作记录&#xff0c;马蜂极度不符合规范。 但是&#xff0c;可以用来避坑。 1.等待功能——使用的是协程函数&#xff0c;且调用与常规调用函数不同。 private IEnumerator Sco(){isScoe…

鸿蒙开发-UI-布局-弹性布局

地方 鸿蒙开发-UI-布局 鸿蒙开发-UI-布局-线性布局 鸿蒙开发-UI-布局-层叠布局 文章目录 前言 一、基本概念 二、布局方向 1、主轴为水平方向 2、主轴为垂直方向 三、布局换行 四、对齐方式 1、主轴对齐方式 2、交叉轴对齐方式 2.1、容器组件设置交叉轴对齐 2.2、子组件设置交叉…

常见框架漏洞

1.什么是框架 Web框架(Web framework)或者叫做Web应用框架(Web application framework)&#xff0c;是用于进行Web开发的一套软件架构。大多数的Web框架提供了一套开发和部署网站的方式。为Web的行为提供了一套支持的方法。使用Web框架&#xff0c;很多的业务逻辑外的功能不需…

RT-Thread 瑞萨 智能家居网络开发:RA6M3 HMI Board 以太网+GUI技术实践

以太网HMI线下培训-环境准备 R A 6 M 3 H M I − B o a r d \textcolor{#4183c4}{RA6M3 HMI-Board} RA6M3HMI−Board 本次培训将使用&#xff0c;由RT-Thread与瑞萨电子及LVGL官方合作推出的一款高性价比图形评估套件。它采用了瑞萨电子的高性能RA6M3芯片&#xff0c;具备2D的…

【C语言编程之旅 3】刷题篇-函数

第一题 解析 数组的下标是从0开始的。 需要注意的是D&#xff1a;int a[] {1,2,3},数组可以通过初始化确定大小。 第二题 解析 B,数组的大小必须是常量 第三题 解析 /* 解题思路&#xff1a;本题目主要是考察函数的声明定义&#xff0c;题目比较简单&#xff0c;请参考以…

c语言0基础笔记

目录 前言 第01章_C语言入门 1.1初识计算机语言 1.2初识C语言 1.3第一个c程序 1.4IDE使用 1.5注释 1.6第一个c程序剖析 1.7printf()输出格式 第02章_变量与进制 2.1关键字 2.2标识符 2.3变量 2.4基本数据类型的使用 2.5变量间的运算规则 2.6常量 2.7输入/输出函…

如何在Linux运行RStudio Server并实现Web浏览器远程访问

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​&#x1f4ab;个人格言:“没有罗马,那就自己创造罗马~” 文章目录 前言1. 安装RStudio Server2. 本地访问3. Linux 安装cpolar4. 配置RStudio server公网访问地址5. …