Jaka klasa do okna pokazującego stan obliczeń

2012-04-16 14:41
0

Piszę program w Qt, który przeprowadza obliczenia na wielu danych. Chciałem zrobić, żeby w trakcie obliczeń pokazywał ile już obliczeń wykonano. Niestety zauważyłem, że klasa QDialog pokazana slotem exec() nie działa tak jakbym chciał, a mianowicie po jej pokazaniu się program nie wykonuje obliczeń tylko czeka na zamknięcie tego okna.
Czy mógłby ktoś mi podpowiedzieć jaką klasę wykorzystać do tego, albo może trzeba jakoś inaczej wyświetlić okno QDialog?
Z góry wielkie dzięki za pomoc.

Pozostało 580 znaków

2012-04-16 14:58
K.
0

QProgressBar ?

Pozostało 580 znaków

2012-04-16 15:13
0

Jest to pewne wyjście, lecz wolałbym, aby po prostu wyskakiwało nowe okno, a chyba QProgressBar nie ma takiej funkcji.

Pozostało 580 znaków

2012-04-16 16:07
0
<facepalm>.... to otwórz dodatkową formę/dialog tylko z tym paskiem.
Tak robiłem, z tym, że QDialog wywoływany przez exec() blokuje obliczenia, a z kolei show() nie wyświetla okna. - simonnam 2012-04-16 16:12

Pozostało 580 znaków

2012-04-16 16:07

To może zamiast QDialog użyj QMainWindow (lub QWIdget z opcją Window) + QProgressBar na nim. QMainWindow wywołujesz przez show(), a nie przez exec() (exec blokuje dalsze wykonywanie)
Na szybko daję Ci jakiś mój kod. Po odpowiednich przeróbkach nada się, myślę. Sorry, ale w pracy jestem, nie mogę więcej.

   QMainWindow *pop = new QMainWindow(0);
      QWebView *view = new QWebView(pop);
                pop->setCentralWidget(view);
/*                connect(view, SIGNAL(urlChanged(QUrl)), pop, SLOT(urlChanged(QUrl)));
                connect(view, SIGNAL(statusBarMessage(QString)), pop, SLOT(StatusBarText(QString)));
*/              connect(view, SIGNAL(loadStarted()), pop, SLOT(loadStarted()));
                connect(view, SIGNAL(loadFinished(bool)), pop, SLOT(loadFinished(bool)));
                connect(view, SIGNAL(loadProgress(int)), pop, SLOT(doProggress(int)));
/*              connect(view->page(), SIGNAL(downloadRequested(QNetworkRequest)), this,
                                             SLOT(doDownloadRequested(QNetworkRequest)));
*/ // to trzeba przepisać do pop lub jakoś połączyć z MainWindow?
                pop->webView = view;
                pop->show();
edytowany 1x, ostatnio: zibicoder, 2012-04-16 16:08

Pozostało 580 znaków

2012-04-16 16:33
0

Problem rozwiązany - użyłem QWidget. Dzięki za pomoc zibicoder.

Pozostało 580 znaków

Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0