【问题标题】:Qprocess and avrdudeQprocess 和 avrdude
【发布时间】:2017-07-08 03:02:19
【问题描述】:

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

我看到使用 Qpr​​ocess 可以轻松启动任何类型的程序,我尝试使用 Explorer Word 等简单程序成功。

问题是当我尝试打开 cmd.exe 时没有任何反应,即使我尝试传递包含所有信息的批处理文件以正确启动 avrdude。

这是代码

QProcess *process = new QProcess(this);
process->startDetached("cmd.exe",QStringList()<<"C:/avrdude/avr.bat"); 

【问题讨论】:

  • 请编辑您的帖子以显示您是如何将批处理文件传递给QProcess 中的cmd.exe。您可以使用包含 echo "Hello." 的批处理文件来形成可重现的样本。
  • 感谢您的回复,我已经编辑了我的代码,如您所见,我要求打开 cmd.exe,然后我想传递我的批处理文件的绝对路径。在我的版本中,绝对路径由一个 qstring 给出,它保存从 Qfiledialog 获得的路径
  • 第一眼看起来还不错。 cmd.exe 是打开还是关闭,还是保持打开状态。在前一种情况下,您可以使用 '/K' 作为第一个参数。我刚刚通过在“cmd.exe”中输入“help cmd”发现了这一点。
  • 您是否注意到startDetached()static?因此,QProcess::startDetached(...); 应该可以工作。在您的情况下(使用QProcess 的实例)start() 是实际使用的方法。
  • 谢谢,我用我在这里找到的任何东西写了它......不幸的是,与其他应用程序不同,即使我使用 startdetached 也没有任何反应......我不知道它是否不起作用或者也许,如果在窗口消失之前太快无法看到窗口

标签: qt qprocess avrdude


【解决方案1】:

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

// 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。如果10 替换,则使用具有完整路径的替代代码。 (在聊天会话期间,我们检查了启动 cmd.exe 时遇到的特殊问题。)在我的系统上,这两种选择都一样。

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

【讨论】:

    猜你喜欢
    • 2011-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-27
    • 2010-09-21
    相关资源
    最近更新 更多