QThread und QTableWidget
Verfasst: 16. Juni 2009 00:03
Hallo Leute,
Ich verwende einen QThread, um ein QTableWidget zu durchsuchen.
Wie folgt der Quelltext:
Wie folgt wird der Thread benutzt:
Der Code funktioniert soweit, allerdings verabschiedet sich das Programm völlig zufällig bei manchen Suchvorgängen verabschiedet:
Unhandled exception at 0x65349658 (QtGuid4.dll) in Crix.exe: 0xC0000005: Access violation reading location 0xfeeefef2.
Ich habe festgestellt, dass QTableWidgetItem::text() die exception verursacht, aber mir ist unklar warum, da dies auch völlig zufällig geschieht.
Wenn ich den Suchen-Code (also die for-Schleife) außerhalb des Threads benutze, funktioniert er wunderbar ohne Exception.
Hat jemand da eine Idee, woran das liegen könnte?
Ich verwende einen QThread, um ein QTableWidget zu durchsuchen.
Wie folgt der Quelltext:
Code: Alles auswählen
searchThread::searchThread( QTableWidget *aTable )
{
mTable = aTable;
}
void searchThread::startSearch( QString aQuery )
{
mQuery = aQuery;
}
void searchThread::run()
{
for( int i=0; i<mTable->rowCount(); i++ )
{
qDebug() << i;
mTable->setRowHidden( i, !mTable->item( i,0 )->text().contains( mQuery, Qt::CaseInsensitive ) );
}
}
Code: Alles auswählen
searchThread *st = new searchThread(table);
st->startSearch( "bla" );
st->start();
Unhandled exception at 0x65349658 (QtGuid4.dll) in Crix.exe: 0xC0000005: Access violation reading location 0xfeeefef2.
Ich habe festgestellt, dass QTableWidgetItem::text() die exception verursacht, aber mir ist unklar warum, da dies auch völlig zufällig geschieht.
Wenn ich den Suchen-Code (also die for-Schleife) außerhalb des Threads benutze, funktioniert er wunderbar ohne Exception.
Hat jemand da eine Idee, woran das liegen könnte?