ProgressBar und MAC

Alles rund um die Programmierung mit Qt
Antworten
Frostie
Beiträge: 60
Registriert: 23. September 2006 09:02

ProgressBar und MAC

Beitrag von Frostie »

Hallo,

wieder mal ein MAC Problem.

Und zwar ändere ich den Wert meiner ProgressBar zähle immer um 10 hoch, in Windows funktioniert das auch ohne Probleme aber unter MAC werden die Werte einfach nicht geändert.

z.B.

Code: Alles auswählen

progressBar->setValue(30);
		this->update(); 
Hab sogar mit update probiert aber wird nicht geändert bzw gar nicht angezeigt.

Hab mal nach jeder Wertänderung eine MessageBox rein, dann macht er es.

Was kann ich noch tun??

Danke
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Re: ProgressBar und MAC

Beitrag von macman »

Frostie hat geschrieben:wieder mal ein MAC Problem.
<korinthenkack>
MAC = Media Access Control
Mac = Apple Rechner
Die ganzen Falschschreibereien von Qt ignoriere ich meistens, aber das nervt zunehmend :-)
http://de.wikipedia.org/wiki/MAC
</korinthenkack>
Frostie hat geschrieben:Hab sogar mit update probiert aber wird nicht geändert bzw gar nicht angezeigt.
Ein update() geht an die Eventloop, ein repaint() wird sofort ausgeführt. Steht natürlich in der Doku und hätte man gefunden, wenn man sich mal alle möglichen Funktionen eines Widgets angeschaut hätte ;-)
http://doc.trolltech.com/4.2/qwidget.html#repaint
Frostie
Beiträge: 60
Registriert: 23. September 2006 09:02

Beitrag von Frostie »

Sorry,

aber repaint() geht auch nicht.

Ich hab die ProgressBar jetzt raus geschmissen.
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

Das war sicherlich nicht nötig. Mit einem processEvents() nach dem update() hätte man mit Sicherheit ein neu malen initiiert, ist mir aber zu spät eingefallen.
s-valve
Beiträge: 87
Registriert: 1. April 2007 15:03
Kontaktdaten:

selbes Problem

Beitrag von s-valve »

Hallo,

ich ahbe das selbe Problem auf meinem Mac. Unter WIn wird die Progressbar korrekt ausgeführt. Unter Mac OS (10.5.6/Qt4.4.3) erscheint sie manchmal und wenn dann ohne einen Fortschritt anzuzeigen.
Es soll der Fortschrit einer Datei öffnen Funktion angezeigt werden. Momentan öffne ich 4-5 Dateien zum testen, welche auch nicht sehr große sind (max. 2kB). Unter Win läuft alles prima, aufm Mac wird sie wie gesagt nur ab und an leer angezeigt.

Code: Alles auswählen

Funktion zum einrichten er ProgressBar:
void ImportExport::setProgressBar(int files, int minFiles, QString msg)
{ //! set progressbar with number of files, min. files to be activated, message string

  if (files < minFiles)
    return; //return if progressbar is not needed (not enough files)
  
  QRect mainWindowGeometry = QMainWindow().geometry();
  progressBar->setGeometry((mainWindowGeometry.width()-100)/2, (mainWindowGeometry.height()-30)/2, 200, 28);
  progressBar->setWindowFlags(Qt::Tool | Qt::WindowStaysOnTopHint);
  progressBar->setAlignment(Qt::AlignHCenter);
  progressBar->reset();
  progressBar->setRange(0, files);
  progressBar->setFormat(msg + "  %p%" );
  progressBar->show();
}

ausführende Funktion (Ausschnitt):
bool ImportExport::OpenPrepare(QStringList files)
{ //! prepare file opening of string list content and call open reinforce function
  ...

setProgressBar(files.count(), 3, msg_progress_fopen); //set progressbar
  
  //if files are selected, get each in a new page
  for (i=0; i< files.count(); i++)//for1
  { 
    //inc. progressbar
    progressBar->setValue(i); 
    progressBar->update();
  	
   ...

  }//for1
  
  progressBar->hide(); //hide progressbar
}
Ich bin ratlos. Ein progressBar->update(); oder ein progressBar->repaint(); bringen gar nichts. Irgendeine Idee?


Grüße,
M
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Auch nur annähernd die letzte Message von macman durchgelesen???
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
s-valve
Beiträge: 87
Registriert: 1. April 2007 15:03
Kontaktdaten:

ups, danke für den Hinweis

Beitrag von s-valve »

Ups, der Einzeiler war mir entgangen :(

Ok, habe das mal eingebaut.

Code: Alles auswählen

    progressBar->update();
    QApplication::processEvents((QEventLoop::AllEvents));
Für wenige Dateien passt das. Wenn ich aber größere Dateien einlese, findet wieder keine Aktion/update statt.

Grüße,
M
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Klar - das einlesen blockiert nunmal die Eventloop. Die einzigste Möglichkeit wäre ein unabhängiger Einlesethread.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
s-valve
Beiträge: 87
Registriert: 1. April 2007 15:03
Kontaktdaten:

Beitrag von s-valve »

Threadprogrammierung wäre wohl eine der nächsten Sachen die ich mir mal ansehen müsste.
Vorerst muss es so gehen. Danke.
Antworten