Signale und Threads....

Alles rund um die Programmierung mit Qt
Antworten
AuE
Beiträge: 918
Registriert: 5. August 2008 10:58

Signale und Threads....

Beitrag von AuE »

Hi,

stehe erade vor dem Problem:

Ich starte in einer runnable das entpacken einer File....und will mich via QFileSystemWatcher an das Verzeichnis hängen um zu wissen wann sich das File geändert hat...

Code: Alles auswählen

id LogReader::run()
{
	// NOTE: This is the "QRunnable" part..... will run as thread in the threadpool
	Extractor *extractor = new Extractor( m_strFilePath.toStdString() )	;
	extractor->initialize();
qDebug() <<"EMITTING SIGNAL FOR INFLATE PATH "
	emit sig_RunnableExtractPath( QString(extractor->getExtractePath().c_str()) );
	qApp->processEvents();
qDebug()<<"STARTING INFLATE";
	extractor->decompress();
	emit sig_FileSize(QFileInfo(extractor->getExtractePath().c_str()).size());
	delete extractor;

}
Auf Grund des ersten Signals würde ich gerne einen Filewatcher aufmachen-connected via

Code: Alles auswählen

connect(this, SIGNAL(sig_RunnableExtractPath(QString)), this, SLOT(getExtractedPath(QString)),Qt::QueuedConnection);
Allerdings beginnt (auf Grund von Threads das entpacken bevor ich das Signal empfange.
Ich dachte eigentlich das ich via qApp->processEvents die Eventloop abarbeiten würde und somit das abarbeiten des Signals triggern könnte.... Allerdings hilft processEvents ja nur für den CallerThread => Kann ich das denn irgendwie auf den Creatorthread (also den MainGUI thread) umbiegen?

Ausgabe:
connecting returned true
before starting the thread
EMITTING SIGNAL FOR INFLATE PATH
STARTING INFLATE
Decompress successfull
after starting the thread
RECIEVED SIGNAL FROM THE RUNNABLE
Antworten