Christian81 hat geschrieben:Dann wird die Funktion wohl nicht im Context des erzeugten Threads aufgerufen. Oder der Thread wird gar nicht gestartet oder was auch immer.
Daran dachte ich auch schon. Ich mache das (verkürzt) jetzt so:
In Klasse A:
Code: Alles auswählen
for (int i = 0 ; i < n ; i++) {
b* = new B();
connect(b, started(), b, func());
b->start();
}
In Klasse B:
Code: Alles auswählen
void B::run() {
exec();
}
void B::func() {
qDebug() << QThread::currentThread();
}
Natürlich mache ich auch entsprechende deleteLater() usw. Aber der qDebug() gibt mir für alle Bs denselben Wert. Nach meinem Verst#ndnis müßte der immer ein anderer sein?
pfid hat geschrieben:Folgende Fragen fallen mir ein:
- wieso castest du einen QThread* auf const char*?
- was soll im ByteArray drin stehen?
- falls die Adresse des QThread-Objekts drinstehen soll, was machst du dann auf ner 64Bit Plattform?
- willst du vielleicht QThread::currentThreadId()?
Okay ich gebs zu, ich versteh deinen Code nicht

Ich versuche es zu erklären:
- Weil QByteArray im Konstruktor hier "const char *" haben will.
- Danach soll der QThread* im QByteArray stehen den ich dann erst in Hex umwandel und danach in Großbuchstaben damit es lesbar ist und keine Sonderzeichen enthält.
- Das ist ein Argument dem ich mich nicht verschliessen kann. Das kann ich aber natürlich anpassen

- das habe ich versucht, ändert aber leider nichts daran das auch das nicht unterschiedlich ist.