• QT启动 一个进程-一个exe文件方法


    QT启动 一个进程-一个exe文件方法。

    启动notepad.exe或cmd.exe

    • Qt 的 QProcess 类用来启动一个外部程序并与其进行通信。
    • 使用 start() 函数运行一个进程,之后 QProcess 进入 Starting 状态;
    • 当程序已经运行后,QProcess 就会进入 Running 状态并发送 started() 信号;
    • 当进程退出后,QProcess 重新回到 NoRunning 状态并发射 finished() 信号。
    • 新建Qt Widget应用,拖入Push Button.
    • 如下是头文件与cpp文件
      1. #ifndef MAINWINDOW_H
      2. #define MAINWINDOW_H
      3. #include
      4. #include
      5. QT_BEGIN_NAMESPACE
      6. namespace Ui { class MainWindow; }
      7. QT_END_NAMESPACE
      8. class MainWindow : public QMainWindow
      9. {
      10. Q_OBJECT
      11. public:
      12. MainWindow(QWidget *parent = nullptr);
      13. ~MainWindow();
      14. private slots:
      15. void on_pushButton_clicked();
      16. void showResult();
      17. void showState(QProcess::ProcessState);
      18. void showError();
      19. void showFinished(int,QProcess::ExitStatus);
      20. private:
      21. Ui::MainWindow *ui;
      22. QProcess my_Process;
      23. };
      24. #endif // MAINWINDOW_H
      1. #include "mainwindow.h"
      2. #include "ui_mainwindow.h"
      3. #include
      4. #include
      5. MainWindow::MainWindow(QWidget *parent)
      6. : QMainWindow(parent)
      7. , ui(new Ui::MainWindow)
      8. {
      9. ui->setupUi(this);
      10. connect(&my_Process,&QProcess::readyRead,this,&MainWindow::showResult);
      11. connect(&my_Process,&QProcess::stateChanged,this,&MainWindow::showState);
      12. connect(&my_Process,&QProcess::errorOccurred,this,&MainWindow::showError);
      13. connect(&my_Process,SIGNAL(finished(int,QProcess::ExitStatus)),this,SLOT(showFinished(int,QProcess::ExitStatus)));
      14. }
      15. MainWindow::~MainWindow()
      16. {
      17. delete ui;
      18. }
      19. void MainWindow::on_pushButton_clicked()
      20. {
      21. // my_Process.start("notepad.exe");
      22. QString program ="cmd.exe";
      23. QStringList arguments;
      24. arguments<<"/c dir&pause"; // /c指定命令dir在cmd中执行
      25. my_Process.start(program,arguments);
      26. }
      27. void MainWindow::showState(QProcess::ProcessState state)
      28. {
      29. qDebug()<<"showState: ";
      30. if(state == QProcess::NotRunning)
      31. {
      32. qDebug()<<"没有程序运行";
      33. }
      34. else if(state==QProcess::Starting)
      35. {
      36. qDebug()<<"开始中";
      37. }
      38. else
      39. {
      40. qDebug()<<"运行中。。。";
      41. }
      42. }
      43. void MainWindow::showResult()
      44. {
      45. QTextCodec *codec=QTextCodec::codecForLocale();
      46. qDebug()<<"显示结果:"<toUnicode(my_Process.readAll());
      47. }
      48. void MainWindow::showError()
      49. {
      50. qDebug()<<"显示错误信息:"<errorString();
      51. }
      52. void MainWindow::showFinished(int exitCode,QProcess::ExitStatus exit_stattus)
      53. {
      54. qDebug()<<"显示完成:"<"退出代码:"<",退出状态:"<
      55. }

  • 相关阅读:
    对于Docker和Podman的一点使用经验
    虚拟机和linux
    往USBKey里面导入双证书专题:概念介绍、执行逻辑
    腾讯云国际云服务器登录之后没有网络,如何排查?
    JS中的构造函数
    从面向对象解读设计思想
    网络安全与TikTok:年轻一代的数字素养
    typescript43-类型兼容性说明
    AR人体姿态识别,实现无边界的人机交互
    TMS320C6678 DSP + Xilinx Kintex-7 FPGA核心板参数资料规格书手册
  • 原文地址:https://blog.csdn.net/txwtech/article/details/126337918