QProcessをエラーハンドラに接続する必要がありますが、エラー文字列をスロットに渡す方法がわかりません。以下はコンパイルされますが、動作しません。QProcess ReadAllStandardError()
QString MainWindow::RunProcess(QString cstring)
{
QProcess *process = new QProcess(this);
connect(process,SIGNAL(readyReadStandardError()),this,SLOT(adberror(process::ReadAllStandardError())))
process->start(cstring);
}
void MainWindow::adberror(QString errtxt)
{
qDebug() << "error handler";
qDebug() << errtxt;
}
私はプロセスエラーを引き起こす可能性がありますが、adberror()は決してトリガーしません。実行すると
は、アプリケーションの出力ペインに私が参照してください。
QObject::connect: No such slot MainWindow::adberror(process::ReadAllStandardError())
QObject::connect: (receiver name: 'MainWindow')
編集:これはQtの5.6です。私は新しいqmake/cleanをやった。
private slots:
void adberror();
及びそれを使用する:
connect(process,SIGNAL(readyReadStandardError()),this,SLOT(adberror()));
すなわち引数なしであなたのようにスロットを定義する必要がありreadyReadStandardError()
信号を処理する
まず、あなたのシグナルとスロット引数が一致する必要が第二ソリューションのためのより多くのコード..秒ReadAllStandardErrorは準備ができていません! – HazemGomaa