Qt-Widgets in einer for-Schleife bearbeiten

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
superschlau
User
Beiträge: 26
Registriert: Mittwoch 4. April 2018, 09:12

Hallo zusammen
Ich habe ein Spielfeld mit 9x9-Elementen. Der Inhalt einer jeden Zelle habe ich in einem 9x9-Array.

Nun möchte ich dieses Spielfeld in Qt5 darstellen. Dazu habe ich in einer "groupBox" 81 "LineEdit"-Widgets. Ich kann diese Elemente in Qt5 abfüllen, indem ich mit "findChildren" das Widget einzeln suche und den Wert mit "setText" übergebe. Diese Methode ist aber gar nicht performant.
Ich möchte alle Child-Widgets der "groubBox" in einer for-Schleife abrufen, anhand des Widgets-Name identifizieren und vorgegebenen den Wert zuweisen. Ich stelle mir fest, das könnte etwas schneller gehen, aber ich bekomme es nicht hin.

Kennt jemand eine Vorgehensweise oder hat jemand eine noch bessere Idee, wie ich meine Arbeitsweise beschleunigen kann.

Danke und Gruss, Jakob
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

Da du keinen Code zeigst, kann man da jetzt auch nur so viel zu sagen. Aber prinzipiell solltest du einfach die 81 Widgets auf genau die gleiche Art und Weise in einer 9x9-Liste ablegen, und dadurch zumindest das aufwaendige suchen im Widget-Tree ersparen. Wobei ich mir tatsaechlich nicht vorstellen kann, dass das *sooo* langsam ist - ich vermute, du hast da noch einen algorithmischen Fehler drin. Doch ich wuerde es in jedem Fall ueber eine solche Datenstruktur machen, es ist einfach sauberer.
superschlau
User
Beiträge: 26
Registriert: Mittwoch 4. April 2018, 09:12

Dein Typ war gut und eigentlich logisch. Ich dachte bloss das MainWinows-Element würde entsprechende Listen bieten.
Nun habe ich beim Programmstart einmalig eine Liste mit den Child-Elementen erstellt (mit findChildren - weil ich die Form mit QtDesigner erstelle) und benutze diese Liste für alle weiteren Zuteilung. Jetzt ist die Darstellung x-Mal schneller erledigt.,
Danke!
Antworten