Ladebalken in QWidget ablaufen lassen.



  • Hi Leute,

    ich habe folgendes Problem: Ich habe ein QMainWindow mit dem ich eine Klasse erzeuge, die bestimmte berechnungen ausführt. Diese Rechnungen dauern immer eine weile, also möchte ich einen Ladebalken implementieren. Ich möchte auch dass dieser Ladebalken in einem neuen Fenster angezeigt wird. Ich benutze folgenden Code:

    Header des ProgressWindows:
    class ProgressWindow : public QWidget, public Ui::progress_window
    {
    	Q_OBJECT
    
    public: 
        ProgressWindow(Bahnmodell *_parent = 0, Qt::WindowFlags flags = 0);
    
    };
    
    Die Dazugehörige Source ist recht kurz, da ich das ganze mit dem QT designer erstellt hab:
    
    ProgressWindow::ProgressWindow(Bahnmodell *_parent, Qt::WindowFlags flags){
    
        setupUi(this);
    
    }
    
    Aufgerufen wird das ganze dann innerhalb des "MainWindows":
    
    void MainWindow::startComputation(){
    
        ComputationClass* comp = new ComputationClass();
    
        Progress = new ProgressWindow(this);
    
        Progress->progressBar->setRange(0, 100);
    
        Progress->show();
    
        comp->compute();
    
    }
    
    void MainWindow::add_progress(){
    
        Progress->progressBar->setValue(Progress->progressBar->value()+1);
    
    }
    

    die add_progress() Funktion wird von der ComputationClass aufgerufen um einen Berechnungsschritt weiterzuschalten.

    Das Problem ist nun, dass das Fenster mit dem ProgressBalken zwar erstellt, aber nicht wirklich angezeigt wird, bis die Berechnung vollständig abgeschlossen ist. Ich möchte dass das nun aber gleichzeitig mit der Berechnung geupdatet wird. Wie kann ich das anstellen?

    Falls noch etwas fehlt, dann werd ich das gerne nachreichen.



  • Schau dir die Klasse
    QPROGRESSDIALOG in der Dokumentation an.
    Du brauchst keine eigene Klasse, da ist alles dafür drin.


Log in to reply