QThread und QPixmap
Verfasst: 27. November 2008 11:51
Hallo Forenmitglieder,
ich habe in einer Anwendung einen QThread gestartet und diesem einen Pointer der aufrufenden Klasse übergeben und dann gestartet:
Des Weiteren habe ich ein Event aus dem Thread übergeben, dass in der StartClass das Pixmap dem Label zuweisen soll, ebenfalls ohne Erfolg.
Testweise habe ich die Oberflächenklasse
In keinem der oben genannten Fälle war es mir möglich, einem Label per Befehl aus dem Thread ein anderes Pixmap zuzuweisen. Jedoch hat das Verändern eines Textes in einem Label immer funktioniert und auch das Ändern eines Pixmaps aus der StartClass ging ohne Probleme.
Kann mir jemand sagen, was ich falsch mache, bzw. was ich ändern muss?
Vielen Dank im Voraus
Johannes
ich habe in einer Anwendung einen QThread gestartet und diesem einen Pointer der aufrufenden Klasse übergeben und dann gestartet:
Wenn ich dann versuche, aus dem Thread einem Label ein Pixmap zuzuweisen, löscht er das vorher festgelegte Pixmap, läd aber auch nicht das neue.m_pDataThread = new DataThread(this);
m_pDataThread->start();
Wenn ich jedoch versuche, aus dem Thread einem Label einen Text zuzuweisen, dann funktioniert alles reibungslos.DataThread::DataThread(QObject *parent)
: QThread(parent)
{
m_pStartClass = qobject_cast<StartClass*>(parent);
}
void DataThread::run(void)
{
m_pStartClass->setLabel(QPixmap(":/StartClass/Resources/picture.bmp"));
}
Des Weiteren habe ich ein Event aus dem Thread übergeben, dass in der StartClass das Pixmap dem Label zuweisen soll, ebenfalls ohne Erfolg.
Testweise habe ich die Oberflächenklasse
als public definiert, so dass der Thread per Zeiger auf die StartClass ebenfalls auf die Oberflächenklasse zugreifen konnte.Ui::StartClassTestClass ui;
In keinem der oben genannten Fälle war es mir möglich, einem Label per Befehl aus dem Thread ein anderes Pixmap zuzuweisen. Jedoch hat das Verändern eines Textes in einem Label immer funktioniert und auch das Ändern eines Pixmaps aus der StartClass ging ohne Probleme.
Kann mir jemand sagen, was ich falsch mache, bzw. was ich ändern muss?
Vielen Dank im Voraus
Johannes