我试图创建一个简单的QT程序,允许我在不使用命令行操作的情况下启动avrdude。
我看到Qprocess很容易启动任何类型的程序,我尝试使用Explorer Word和Others等简单程序。
问题是当我尝试打开cmd.exe时没有任何反应,即使我尝试传递包含所有信息的批处理文件以正确启动avrdude。
这是代码
QProcess *process = new QProcess(this);
process->startDetached("cmd.exe",QStringList()<<"C:/avrdude/avr.bat");
答案 0 :(得分:1)
我编写了一个最小示例应用程序,该应用程序显示如何使用cmd
(在按钮单击时)使用命令启动QProcess::startDetached()
:
// 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)