Thread und die Aktualisierung der Tabelle
Code: Alles auswählen
void MyThread::run()
{
QEvent *event=new QEvent(QEvent::Paint);
for(int i=0; i<100; ++i)
{
_tabelle->insertRows(i);
_tabelle->showRow(i);
_app->postEvent(_app, event);
sleep(1);
}
}
....Das ist das Reslutat!!Speicherzugriffsfehler
PS: Und bitte kein Kommentar wegen dem Speicherleck...daran liegt es 101% nicht
Debian 2.4.27-1-386
[...]peace, love and empathy
[...]peace, love and empathy
Das Problem existiert nicht mehr, es war einmal.
Nun, hier das (hoffentlich ständig funktionierende Ergebnis):ja natürlich mit CustomEvent, womit denn sonst....
Nun, hier das (hoffentlich ständig funktionierende Ergebnis):
Code: Alles auswählen
void MyThread::run()
{
int i=0;
for( i; i<100; ++i)
{
_app->postEvent(_fenster, new CustomEvent());
sleep(1);
}
}
void Fenster::customEvent( QCustomEvent * e )
{
Tabelle->insertRows(0);
Tabelle->showRow(0);
}
Ist das ironisch gemeint?
Debian 2.4.27-1-386
[...]peace, love and empathy
[...]peace, love and empathy
-
- Beiträge: 19
- Registriert: 17. Januar 2012 15:26
- Kontaktdaten:
Re: Thread und die Aktualisierung der Tabelle
Ich habe das so gelöst:
Thread hat unter signal: eine Methode z.B. sendSignalRead( Typ readObject ) welches in der Methode ::run() nach dem Einlesen eines Objektes mittels emit mit dem gelesenen Objekt als Parameter aufgerufen wird.
Die Klasse mit der Tabelle, welche das gelesene Objekt anzeigen soll, hat zum Einfügen eine Methode, welche als Slot deklariert ist.
Wenn der Thread instanziiert wird und ein Objekt mit der Tabelle existiert, wird die Verbindung des Signals zum Slot über connect hergestellt und dann gestartet.
Achtung! Wenn Objekt im Thread neu instanziiert wird, muss der ‚fangende‘ Slot das Objekt ggf. aus dem Speicher entfernen.
voilà
Thread hat unter signal: eine Methode z.B. sendSignalRead( Typ readObject ) welches in der Methode ::run() nach dem Einlesen eines Objektes mittels emit mit dem gelesenen Objekt als Parameter aufgerufen wird.
Die Klasse mit der Tabelle, welche das gelesene Objekt anzeigen soll, hat zum Einfügen eine Methode, welche als Slot deklariert ist.
Wenn der Thread instanziiert wird und ein Objekt mit der Tabelle existiert, wird die Verbindung des Signals zum Slot über connect hergestellt und dann gestartet.
Achtung! Wenn Objekt im Thread neu instanziiert wird, muss der ‚fangende‘ Slot das Objekt ggf. aus dem Speicher entfernen.
voilà