ubuntu qt 运行命令行

news/2024/11/25 19:35:19/

文章目录

    • 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.ppmy.cn/news/1326195.html

相关文章

分布式搜索引擎ElasticSearch——深入elasticSearch

分布式搜索引擎ElasticSearch——深入elasticSearch 文章目录 分布式搜索引擎ElasticSearch——深入elasticSearch数据聚合聚合的分类DSL实现Bucket聚合DSL实现Metric聚合RestAPI实现聚合 自动补全DSL实现自动补全查询修改酒店索引库数据结构RestAPI实现自动补全查询实现酒店搜…

scroll-view在小程序页面里实现滚动,uniapp项目

要实现红框中的区域进行滚动,scroll-view必须写高 <template><!-- 合同-待确认 --><view class"viewport"><!-- 上 --><view class"top-box"><!-- tab --><view class"tabs"><textv-for"(ite…

离线数据仓库-关于增量和全量

数据同步策略 数据仓库同步策略概述一、数据的全量同步二、数据的增量同步三、数据同步策略的选择 数据仓库同步策略概述 应用系统所产生的业务数据是数据仓库的重要数据来源&#xff0c;我们需要每日定时从业务数据库中抽取数据&#xff0c;传输到数据仓库中&#xff0c;之后…

什么是技术架构?架构和框架之间的区别是什么?怎样去做好架构设计?(二)

什么是技术架构?架构和框架之间的区别是什么?怎样去做好架构设计?(二)。 技术架构是对某一技术问题(需求)解决方案的结构化描述,由构成解决方案的组件结构及之间的交互关系构成。广义上的技术架构是一系列涵盖多类技术问题设计方案的统称,例如部署方案、存储方案、缓存…

Linux搭建dns主从服务器

一、实验要求 配置Dns主从服务器&#xff0c;能够实现正常的正反向解析 二、知识点 1、DNS简介 DNS&#xff08;Domain Name System&#xff09;是互联网上的一项服务&#xff0c;它作为将域名和IP地址相互映射的一个分布式数据库&#xff0c;能够使人更方便的访问互联网。…

c++QT文件IO

1、QFileDialog文件对话框 与QMessageBox一样&#xff0c;QFileDialog也继承了QDialog类&#xff0c;直接使用静态成员函数弹窗。弹出的结果&#xff08;选择文件的路径&#xff09;通过返回值获取。 1&#xff09;获取一个打开或保存的文件路径 // 获取一个打开或保存的文件路…

中移(苏州)软件技术有限公司面试问题与解答(2)—— Linux内核内存初始化的完整流程1

接前一篇文章&#xff1a;中移&#xff08;苏州&#xff09;软件技术有限公司面试问题与解答&#xff08;1&#xff09;—— 可信计算国密标准 本文参考以下文章&#xff1a; 启动期间的内存管理之初始化过程概述----Linux内存管理(九) Linux初始化 特此致谢&#xff01; 本…

Java 读取 Excel 表格—— Easy Excel 基本使用

两种读对象的方式 确定表头&#xff1a;建立对象&#xff0c;和表头形成映射关系。不确定表头&#xff1a;每一行数据映射为 Map<String, Object>&#xff0c;比如用户自己上传的表格。 两种读取模式 监听器&#xff1a;先创建监听器、在读取文件时绑定监听器。单独抽…