Also das bringt schonmal einen spürbaren Performancegewinn.
Ich deaktiviere das neuzeichnen, füge alle neuen Items an und aktiviere es wieder.
Trotzdem verkraftet es noch recht wenig Einträge.
Ich habe das untersucht und es liegt definitiv an der
Hier der mein Code zum anhängen:
Code: Alles auswählen
// ----------------------------------------------------------------------------
void CLoggingWindow::TransmitMessage(QList<QListWidgetItem*> qlist)
// ----------------------------------------------------------------------------
{
setUpdatesEnabled(false);
if(m_pQListWidget->count() > 1000) // Meine Notlösung
{
pQListWidget->clear();
}
while (!qlist.isEmpty())
{
m_pQListWidget->addItem( qlist.takeFirst() );
}
// m_pQListWidget->scrollToBottom(); is buggy and does not work
m_pQListWidget->scrollToItem( m_pQListWidget->item( m_pQListWidget->count() -1 ) );
setUpdatesEnabled(true);
}
Wenn man addItem jetzt mal auskommentiert und nur die Liste Element für Element leert, verbraucht meine Anwendung nur noch 5% CPU-Rechenpower:
Code: Alles auswählen
while (!qlist.isEmpty())
{
qlist.takeFirst();
//m_pQListWidget->addItem( qlist.takeFirst() );
}
Hättest du noch eine Idee, wie man mehrere Einträge schnell anhängen könnte?
Edit:
Ich sehe, dass man eine QStringList übergeben kann. Das wäre aber suboptimal, da ich gerne die Loggingprioritäten unterscheiden möchte.
Momentan sieht das nämlich so aus:
http://img147.imageshack.us/my.php?imag ... nntlb5.png
D.h. ich brauch Items mit Icon...
muss ich in den Sauren Apfel beißen?