2017-02-18 16 views
0

私は、コマンドライン操作を使わずにavrdudeを起動できる単純なQTプログラムを作成しようとしています。Qprocess and avrdude

Qprocessを使用すると、あらゆる種類のプログラムを簡単に起動でき、Explorer Wordやその他のような簡単なプログラムでうまくいったことがわかりました。

問題は、私が正しく起動するためにすべての情報を含むバッチファイルを渡そうとしても、cmd.exeを開こうとすると何も起こらないということです。

ここで私は(ボタンのクリックで)QProcess::startDetached()を使用してコマンドを使用してcmdを開始する方法を示した最小限のサンプルアプリケーションを書いたコード

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

してください、あなたは 'QProcess'でcmd.exe''にバッチファイルを渡したのかを示すためにあなたのポストを編集します。再現可能なサンプルを作成するためだけに、 'echo" Hello "を含むバッチファイルを使用することができます。 – Scheff

+0

あなたの返事をありがとう、私は私のコードを編集した、あなたが私のバッチファイルの絶対パスを渡すcmd.exeを開くように頼むことがわかります。私のバージョンでは、Qfiledialogから得られたパスを保存するqstringによって絶対パスが与えられます。 – Deid

+0

一見すると悪くはありません。 'cmd.exe'は開いているか閉じていますか、それとも開いていますか?前者の場合、最初の引数として '/ K'を使用できます。私は 'cmd.exe'に 'help cmd'と入力することでこれを見つけました。 – Scheff

答えて

1

です:

// 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)

関連する問題