Seite 1 von 1
[gelöst] Children Liste nach Namen sortieren
Verfasst: 1. Dezember 2009 13:10
von 101
Hallo Zusammen,
ich habe ein Frame mit PushButtons. Die PushButtons kann ich ja mit
in eine Liste auslesen.
Meine Frage:
Ist es möglich die in der Liste enthaltenen Items
nach Namen zu sortieren bzw. möchte ich die Pointer auf diese PushButtons nach der Namenssortierung in eine neue QList abspeichern.
D.h. Der Pointer auf PushButton_01 ist das erste Element in der neuen Liste, der Pointer auf PushButton_02 ist das zweite, u.s.w..
Ist dies überhaupt machbar, wenn ja wie?
Verfasst: 1. Dezember 2009 14:41
von AuE
Mach dir ne Map mit Key = objectName und value = QPushbutton * und pack dir die Items da rein.
Verfasst: 1. Dezember 2009 14:47
von 101
Wie kann ich auf diese Items aus der "children-Liste" zugreifen?
Verfasst: 1. Dezember 2009 15:20
von AuE
Was liefert dir denn findChildren?
Verfasst: 1. Dezember 2009 16:13
von 101
Code: Alles auswählen
(QPushButton(0xec1878, name = "PushButton_03") , QPushButton(0xe6b668, name = "PushButton_04") , QPushButton(0xe6baa8, name = "PushButton_01") , ... )
Verfasst: 1. Dezember 2009 16:21
von AuE
Das ist die augabe von qDebug() << findChildren<QPushButton *>()
.... und wenn dir die Spitzen Klammern anschaust weisst auch was der Rückgaberwert dein Fkt ist
Eine Liste voller Pointer auf Pushbuttons!
Verfasst: 1. Dezember 2009 16:33
von 101
Wie kann ich diese Liste nach den Namen der PushButtons sortieren?
Verfasst: 1. Dezember 2009 16:45
von franzf
Ohne Anspruch auf Korrektheit:
Code: Alles auswählen
bool btnLess(QPushButton* left, QPushButton* right) {
return left->objectName() < right->objectName();
}
void sortBtnListAscending( QList<QPushButton*>& buttons ) {
qSort(buttons.begin(), buttons.end(), btnLess);
}
selbes Vorgehen für absteigend sortieren.
Verfasst: 1. Dezember 2009 16:59
von 101
Funktioniert!
Ist aber ganz schön heftig! Ginge es auch ohne die Hilfsfunktion "btnLess"?
Verfasst: 1. Dezember 2009 17:23
von franzf
101 hat geschrieben:Funktioniert!
Ist aber ganz schön heftig! Ginge es auch ohne die Hilfsfunktion "btnLess"?
Nö, geht nicht ohne. Ohne würdest du die Adressen der pointer vergleichen, und das bringt dir beim Vergleichskriterium "objectName" nicht weiter...