wenn ich mehrere einträge auswähle und den knopf drücke, sollen diese einträge gelöscht werden.
in der praxis stürzt mein programm aber sang- und klanglos ab.
mir ist nicht wirklich klar, was da passiert, aber ich habe mal auf signale getippt, die beim anfassen der Items emittiert werden udn also blockSignals(true) auf den listview gesetzt -- ändert nix.
kann mir wer tipps geben , was a) passiert und b) wie ich damit umgehe?
in den docs steht der schöne satz
"Note that changing the state of the list view in a slot connected to a list view signal may cause unexpected side effects. If you need to change the list view's state in response to a signal, use a single shot timer with a time out of 0, and connect this timer to a slot that modifies the list view's state. "
abgesehen davon, dass ich die signal ja explizit vorher abgeschaltet habe, ist mir der sinn von "use a single shot timer" völlig schleierhaft -- wenn ich ihn von meinem knopf aus in einem slot aufrufe, ändert das nix.
Code: Alles auswählen
//dieser slot ist an des buttons clicked-signal gebunden
void MyPage::slotDeleteLater(){
QTimer::singleShot(0, this, SLOT(slotDelete()));
}
void MyPage::slotDelete(){
//tCurrentList ist ausserhalb definiert als new QListView;
tCurrentList->blockSignals(true);
QListViewItemIterator it( tCurrentList, QListViewItemIterator::Selected );
while ( it.current() ) {
tCurrentList->takeItem(it.current());
it++;
}
tCurrentList->blockSignals(false);
}