Hallo,
ich will unter QT die numerische Position des Auswahlbalkens eines QListView-Widgets feststellen. Nach langem Wälzen der Doku habe ich mir dafür folgendes Konstrukt zurechtgestutzt:
int pos=ListView1->itemPos(ListView1->currentItem());
Auf den Rechnern an der HTW liefert das folgendes:
'echte' Position | $pos -----------------+-------- 1 | 0 2 | 16 3 | 32 usw.
Das ganze setzt sich in Vielfachen von 16 fort, so dass ein einfaches pos/=16 reicht, um brauchbare Koordinaten zu bekommen. Erschrocken bin ich jetzt hier zu Hause - wollte mein 'Tagwerk' nochmal bewundern und bekomme plötzlich anstelle der Vielfachen von 16, Vielfache von 20! (selbe QT-Version 3.0.5). Mir ist klar, dass meine Infos ohne Quelltext nicht viel nützen - würde mich aber über eine kurze Info freuen, was ich eventuell nicht bedacht habe oder wie die Unterschiede zustande kommen könnten.
Viele Grüße, Matthias
Gleich noch ein Ergänzung: es scheint sich bei den zurückgegebenen Werten um die Koordinaten in Pixeln zu handeln!? Das würde auch den Unterschied erklären - meine Schriften sind zu Hause etwas größer eingestellt. Aber: gibt es eine andere Funktion zu ermitteln des Index des aktuellen Listenelementes?
Matthias
On Friday 04 October 2002 22:56, Matthias Petermann wrote:
int pos=ListView1->itemPos(ListView1->currentItem());
Ich würde hier zwischen Daten und Darstellung trennen, zumal jeder sein Qt anders konfiguriert hat und der Wert damit nicht festgelegt ist. (Auf einem Handheld mit Qt/embedded ist alles viiiiiel kleiner als auf einem 19''-Monitor mit groß eingestellter Schriftart.)
Die Frage ist also erstmal, wofür benötigst du die Position? Wenn du etwas am QListViewItem direkt ändern willst, oder wenn z.B. ein Popup-Menü erzeugt werden soll, gibt es entsprechende Signale, die die Koordinaten als QPoint zusammen mit dem Item (welches NULL sein kann) übermitteln.
Josef
Hallo Josef,
On Sat, Oct 05, 2002 at 10:04:00AM +0200, Josef Spillner wrote:
Ich würde hier zwischen Daten und Darstellung trennen, zumal jeder sein Qt anders konfiguriert hat und der Wert damit nicht festgelegt ist. (Auf einem Handheld mit Qt/embedded ist alles viiiiiel kleiner als auf einem 19''-Monitor mit groß eingestellter Schriftart.)
Ich hab auch nicht schlecht gestaunt, gestern Abend an meinem 'eigenen' PC.
Die Frage ist also erstmal, wofür benötigst du die Position? Wenn du etwas am QListViewItem direkt ändern willst, oder wenn z.B. ein Popup-Menü erzeugt werden soll, gibt es entsprechende Signale, die die Koordinaten als QPoint zusammen mit dem Item (welches NULL sein kann) übermitteln.
Ich habe eine Belegarbeit in C++ zu machen, funktioniert soweit schon fast perfekt. Unsere Aufgabenstellung schließt aber die Implementierung von _eigenen_ Listenklassen für z.B. Büchertitel ein. D.h. ich muss im Programm die geforderte eigene Klasse verwenden, und das ganze dann irgendwie auf QT projezieren. Die eigene Listenklasse verwaltet ihre Elemente alphabetisch sortiert, und kann u.a. über einen Index von 0 bis n auf die Elemente zugreifen. Diese Namen dieser Elemente (z.B. Büchertitel) werden dann in ein unsortiertes QT-ListView-Objekt gebracht. Die Elemente enthalten nicht nur Namen, sondern auch andere Daten, die nicht in QListViewItem abgelegt werden können. Deshalb benötige ich einen einfach zu handhabenden Index, der die Position des Auswahlbalkend repräsentiert. Wundert mich eigentlich, dass es sowas nicht gibt, wo Qt doch sonst so ergiebig ist... Ist ansonsten echt ein feines Toolkit ;)
Viele Grüße Matthias
On Sat, Oct 05, 2002 at 10:38:33AM +0200, Matthias Petermann wrote:
Hallo Josef,
Ich heiße zwar nicht Josef, antworte trotzdem mal ;)
Die eigene Listenklasse verwaltet ihre Elemente alphabetisch sortiert, und kann u.a. über einen Index von 0 bis n auf die Elemente zugreifen. Diese Namen dieser Elemente (z.B. Büchertitel) werden dann in ein unsortiertes QT-ListView-Objekt gebracht. Die Elemente enthalten nicht nur Namen, sondern auch andere Daten, die nicht in QListViewItem abgelegt werden können. Deshalb benötige ich einen einfach zu handhabenden Index, der die Position des Auswahlbalkend repräsentiert. Wundert mich eigentlich, dass es sowas nicht gibt, wo Qt doch sonst so ergiebig ist... Ist ansonsten echt ein feines Toolkit ;)
QListView ist sowohl für Listen als auch für Bäume gedacht, weswegen eine einfacher listview[x] operator nicht funktionieren würde. Warum verwendest du nicht einfach ListBox dafür? Wenn es unbedingt ListView sein muss könntest du mit QListViewItemIterator über dem ListView gehen und einen counter mitzählen. Wenn er die richtige Position erreicht hat wird das aktuelle Item zurückgegeben.
Ciao, Tobias
lug-dd@mailman.schlittermann.de