- 私は(notepad.exeのようなので、上の例で異なるプログラム用)テキストファイルから複数のQProcessesを開始し、彼らはまだ実行されている場合は、定期的にチェックしたいです。QTチェックQProcess状態を定期的
AがUIスレッドがブロックされているので、ループは、溶液をisn'tつつ。 これはどのように達成できますか?ジャワ(アンドロイド)で、私はScheduldExecutorServiceに接続asynctask でこれを行うだろう。 qtに似たようなものがありますか?私は私のプロセスを開始するところ
これは、次のとおりです。
void mywidget::startprocesses(QString &text)
{
QProcess *process = new QProcess(this);
this->myprocess.append(process);
process->start(text);
int state = process->state();
addlabelstatus(state);
}
そしてここでメソッドが呼び出されます。
while(!stream->atEnd()) //check stream until empty and assign line as a caption to a new QLabel
{
this->fileread = stream->readLine();
if(!this->fileread.isEmpty())
{
central->addlabel(this->fileread);
central->startprocesses(this->fileread);
}
}
void mywidget::addlabelstatus(QProcess::ProcessState newstate)
{
QString sstring;
if(newstate == 0)
{
QString sstring = "Wird nicht ausgeführt";
QLabel *label = new QLabel(sstring);
this->processstatus.append(label);
this->vrarea->addWidget(label);
}
else if (newstate == 1)
{
QString sstring = "Wird gestartet!";
QLabel *label = new QLabel(sstring);
this->processstatus.append(label);
this->vrarea->addWidget(label);
}
else if (newstate == 2)
{
QString sstring = "Wird ausgeführt!";
QLabel *label = new QLabel(sstring);
this->processstatus.append(label);
this->vrarea->addWidget(label);
}
else
{
QString sstring = "kein Status vorhanden!";
QLabel *label = new QLabel(sstring);
this->processstatus.append(label);
this->vrarea->addWidget(label);
}
}
http://doc.qt.io/qt-4.8/qtconcurrentrun.html? – zoska