首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Qprocess和avrdude

Qprocess和avrdude
EN

Stack Overflow用户
提问于 2017-02-18 23:57:46
回答 1查看 170关注 0票数 1

我正在尝试创建一个简单的QT程序,它允许我在不使用命令行操作的情况下启动avrdude。

我看到使用Qprocess可以很容易地启动任何类型的程序,我尝试了一些简单的程序,如Explorer、Word和其他程序。

问题是,当我试图打开cmd.exe时,什么也没有发生,即使我试图传递一个包含所有信息的批处理文件来正确启动avrdude。

下面是代码

代码语言:javascript
复制
QProcess *process = new QProcess(this);
process->startDetached("cmd.exe",QStringList()<<"C:/avrdude/avr.bat"); 
EN

回答 1

Stack Overflow用户

发布于 2017-02-19 02:42:19

我写了一个最小的示例应用程序,它展示了如何使用QProcess::startDetached()命令启动cmd (单击按钮):

代码语言:javascript
复制
// standard C++ header:
#include <iostream>

// Qt header:
#include <QApplication>
#include <QMainWindow>
#include <QPushButton>
#include <QProcess>

int main(int argc, char **argv)
{
  // main application
#undef qApp // undef macro qApp out of the way
  QApplication qApp(argc, argv);
  QMainWindow qWin;
  QPushButton qBtn(QString::fromLatin1("Start cmd"));
  QObject::connect(&qBtn, &QPushButton::clicked,
    [](bool) {
      bool ret = QProcess::startDetached(
#if 1 // let Windows search for cmd.exe in %PATH%
        QString::fromLatin1("cmd.exe"),
#else // define exact path of cmd.exe
        QString::fromLatin1("C:\\Windows\\system32\\cmd.exe"),
#endif // 1
        QStringList()
        << QString::fromLatin1("/K")
        << QString::fromLatin1("echo Hello"));
      std::cout << "QProcess::startDetached():"
        << (ret ? "OK." : "Failed!") << std::endl;
    });
  qWin.setCentralWidget(&qBtn);
  qWin.show();
  return qApp.exec();
}

Qt项目文件留作练习。(抱歉,我使用了CMake。)

请注意#if 1。如果将1替换为0,则使用具有完整路径的替代代码。(在聊天过程中,我们研究了有关启动cmd.exe的特殊问题。)在我的系统上,这两种选择都做得很好。

(我的系统: Windows 10、VS2013、Qt 5.7)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42317359

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档