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?