Aggiungere testo ad una QTextEdit alla fine di un processo
Solved
Italian
-
ciao!
alla fine di un processo QProcess devo aggiungere un testo a quello già presente nella QTextEdit.
per farlo ho fatto cosi:void MainWindow::execCmd(QString cmd) { ui->txtRes->clear(); ui->txtUrl->setEnabled(false); ui->btnDownload->setEnabled(false); process = new QProcess(); if (process) { process->setEnvironment(QProcess::systemEnvironment()); process->setProcessChannelMode(QProcess::MergedChannels); process->start(cmd); process->waitForStarted(); connect(process, &QProcess::readyReadStandardOutput, this, &MainWindow::readOutput); connect(process, &QProcess::readyReadStandardError, this, &MainWindow::readError); } } void MainWindow::processFinished(int code, QProcess::ExitStatus status) { ui->txtRes->setText(ui->txtRes->toPlainText() + "\n" + "TERMINATO"); ui->txtUrl->setEnabled(true); ui->txtUrl->setText(""); ui->btnDownload->setEnabled(true); process->kill(); } void MainWindow::readOutput() { QProcess *process = dynamic_cast<QProcess*>(sender()); if (process) { ui->txtRes->append(process->readAllStandardOutput()); connect(process, SIGNAL(finished(int, QProcess::ExitStatus)), this, SLOT(processFinished(int, QProcess::ExitStatus))); } } void MainWindow::readError() { QProcess *process = dynamic_cast<QProcess*>(sender()); if (process) { QPalette p = ui->txtRes->palette(); p.setColor(QPalette::Text, Qt::red); ui->txtRes->setPalette(p); ui->txtRes->append(process->readAllStandardError()); } }
solo che la parola TERMINATO mi viene scritta parecchie volte.
anche una ventina a volte, e non capisco il perchè. -
-