Das Ganze passiert immer dann wenn, ich über eine Funktion die Variablen m_iMin, m_iMax ändere. Allerdings scheint das Programm immer dann abzustürzen, wenn diese geändert werden, bevor die Berechnung eines Bildes abgeschlossen ist. Ich habe mal die Dateien mit der auskommentierten QThread-Klasse angehangen. Im Header sind zwei Entwürfe, die obere ist die aktuelle die auch zur Implementation passt. Es wäre schön, wenn man die Bildberechnung in einen Thread packen könnte.
Code: Alles auswählen
void DisplayThread::run() {
while(true) {
m_pParent->slChangeConfig(m_iMin, m_iMax );
QImage m_pImage = QImage( (const uchar *)m_pParent->GetImg()->imageData,
m_pParent->GetImg()->width,
m_pParent->GetImg()->height,
QImage::Format_RGB888);
QString NrColLbl = QString::number(m_pParent->GetNrColonies()) + " surfaces";
emit ImageProcessed(m_pImage, NrColLbl);
mutex.lock();
condition.wait(&mutex);
mutex.unlock();
}
}
Code: Alles auswählen
void DisplayThread::SetConfig(int iMin, int iMax) {
QMutexLocker locker(&mutex);
m_iMin = iMin;
m_iMax = iMax;
if (!isRunning()) {
start(LowPriority);
} else {
restart = true;
condition.wakeOne();
}
}