Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    [Qt] QProcess finished viene richiamato più volte

    ciao!

    o almeno penso che il problema sia quello.
    nel senso che questo è il mio codice:
    codice:
    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) {
        process->kill();
        qDebug() << "OK";
    }
    
    void MainWindow::readOutput() {
        QProcess *process = dynamic_cast<QProcess*>(sender());
        if (process) {
            ui->txtRes->appendPlainText(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->appendPlainText(process->readAllStandardError());
        }
    }
    quell'OK mi compare in console una decina di volte.
    idee??

  2. #2
    risolto.

    l'errore era chiamare questa riga:
    codice:
    connect(process, SIGNAL(finished(int, QProcess::ExitStatus)), this, SLOT(processFinished(int, QProcess::ExitStatus)));
    nella funzione readOutput.


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2020 vBulletin Solutions, Inc. All rights reserved.