Anzeige:
Ergebnis 1 bis 4 von 4

Thema: KMessageBox x-mal ??

  1. #1
    Registrierter Benutzer
    Registriert seit
    14.11.2002
    Ort
    Obertshausen
    Beiträge
    87

    KMessageBox x-mal ??

    Hallo zusammen,

    ich hätt da mal wieder eine Frage:

    In einem QT/KDE Programm starte ich einen process und leite die Ausgabe in ein Ausgabefeld vom Typ QTextEdit um
    mle_log->append( my_process->readStdout() );

    Wenn der Process beendet wurde, will ich das Ausgabefeld nach Schlüsselwörtern durchsuchen, um entsprechende Hinweisfenster anzuzeigen.

    if (mle_log->find( "finished successfully",true,true,true))
    KMessageBox::information(this,"Operation finished successfully")

    Das funktioniert vom Prinzip her auch aber wenn ich den Prozess ein zweites mal starte,
    kommt am Ende die Message 2 mal, beim dritten mal 3 mal etc.
    und das ist nicht im Sinne des Erfinders, obwohl ich bei jedem neuen Start ein

    mle_log->clear()

    aufrufe.

    Hat jemand eine Idee, oder braucht ihr noch mehr Infos zum helfen??

    Vielen Dank fürs Kopfzerbrechen
    Celindir
    May the source be with you...

    www.celindir.de

  2. #2
    Registrierter Benutzer
    Registriert seit
    14.11.2002
    Ort
    Obertshausen
    Beiträge
    87
    Hier noch mal der komplette Code der Bereiche, die wohl die Schwierigkeiten machen.
    Das gestern war aus dem Kopf und daher wohl etwas wenig aussagekräftig

    Code:
    void Kwickcdcopy::execute_process(QStringList my_processargs)
    {
    mle_log->clear();
    my_process->setArguments(my_processargs);
    connect( my_process , SIGNAL( readyReadStdout() ), this, SLOT ( readFromStdout() ) );
    connect( my_process , SIGNAL( readyReadStderr() ), this, SLOT ( readFromStderr()) );
    connect( my_process , SIGNAL( processExited() ), this, SLOT( process_end()) );
    pb_copy->setEnabled(false);
    if ( !my_process->start() )  KMessageBox::error(this, i18n("Ooops ! Process could not be started!\n\nThis shouldn't happen!"));
    }
    
    //////////////////////////////////////////
    
    void Kwickcdcopy::readFromStderr()
    {
    mle_log->append(my_process->readStderr() );
    }
    
    /////////////////////////////////
    
    void Kwickcdcopy::readFromStdout()
    {
    mle_log->append(my_process->readStdout() );
    }
    
    /////////////////////////////////////////
    
    void Kwickcdcopy::process_end()
    {
    if (mle_log->find("finished successfully",true,true,true))
        KMessageBox::information(this, i18n("CD successfully burned ! \n\nSee Log Tab for details ! \n"));
    if (mle_log->find("ERROR: Unit not ready, giving up.",true,true,true))
        KMessageBox::error(this, i18n("Unit not ready !\nProbably no Disc inserted. \n\nSee Log Tab for details ! \n"));
    if (mle_log->find("ERROR",true,true,true))
        KMessageBox::error(this, i18n("Ooops...\n\n... it seems an error has occured !\n\nSee Log Tab for details ! \n"));
    pb_copy->setEnabled(true);
    }
    Wie gesagt, das Problem besteht darin, dass mit jedem Aufruf von execute_process(QStringList my_processargs)
    die entsprechende KMessageBox aus process_end() einmal mehr angezeigt wird
    und zwar immer dei richtige (also nicht etwa alle hintereinander)

    Ich fürchte, es ist irgend ein ganz dummer kleiner Fehler, den ich aber nicht sehe.

    Hoffe, ihr könnt helfen.

    Gruß
    Celindir
    May the source be with you...

    www.celindir.de

  3. #3
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Ich glaube das Problem ist, dass du zwar immer den selben KProcess benutzt, aber immer neu connectest.

    Dadurch gibt es beim zweiten Mal schon zwei Verbindungen vom Signal zu deinem Slot, weswegen er zweimal ausgeführt wird, usw.

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  4. #4
    Registrierter Benutzer
    Registriert seit
    14.11.2002
    Ort
    Obertshausen
    Beiträge
    87
    Danke,

    hab die connect-befehle jetzt im Konstruktor und es funktioniert.

    Gruß
    Celindir
    May the source be with you...

    www.celindir.de

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •