QtJambi: QPixmap in QComboBox anzeigen


#1

Ich versuche nun schon seit Stunden eine Liste von QPixmaps in einer QComboBox auswählbar zu machen. Genau gesagt kann ich die sogar anzeigen lassen, auch das Auswählen funktioniert (siehe Anhang). Das eigentliche Problem dabei ist, sobald das Pop-Up-Menü wieder einklappt wird nichts mehr angzeigt!

Zuerst habe ich versucht das ganze über ein QAbstractListModel zu lösen:

	private ArrayList<String>  paths;
	private ArrayList<QPixmap> watermarks;
	
	...

	@Override
	public Object data(QModelIndex index, int role) {
		if (role == Qt.ItemDataRole.SizeHintRole) {
			return this.watermarks.get(index.row()).size();
		} else if (role == Qt.ItemDataRole.DecorationRole) {
			return this.watermarks.get(index.row());
		}
		
		return null;
	}

	@Override
	public int rowCount(QModelIndex index) {
		return this.watermarks.size();
	}
}```

Nachdem das nicht funktioniert hat, habe ich versucht das Ganze mit einem QItemDelegate zu lösen - vergeblich. Daher bin ich jetzt wieder zu meiner Model-Lösung zurückgekehrt. Kennt sich hier zufällig jemand mit QtJambi oder C++ Qt aus? Ich habe echt keine Ahnung mehr wie ich das hier angehen soll.

#2

Eine sehr spezielle Frage zu eine sehr speziellen Framework - es wäre schon ein ziemlicher Zufall, wenn dort jemand “die Lösung” wüßte. Websuchen liefern zwar einiges ( http://stackoverflow.com/questions/126759/qt-jambi-qabstractlistmodel-not-displaying-in-qlistview ) aber vermutlich hat das gar nichts damit zu tun (Qt ist schon sehr komplex… oder mächtig, wie man’s nimmt :wink: )

In der Doku zu http://doc.qt.nokia.com/qtjambi-4.4/html/com/trolltech/qt/core/QAbstractListModel.html steht
"Well behaved models also provide a headerData() implementation. "
Das ist jetzt wildeste (!) unfundierteste (!) Spekulation, aber könnte es sein, das das, was bei “headerData” zurückgegeben werden muss, gerade die Auswahl ist?


#3

[QUOTE=Marco13;18214]In der Doku zu http://doc.qt.nokia.com/qtjambi-4.4/html/com/trolltech/qt/core/QAbstractListModel.html steht
"Well behaved models also provide a headerData() implementation. "
Das ist jetzt wildeste (!) unfundierteste (!) Spekulation, aber könnte es sein, das das, was bei “headerData” zurückgegeben werden muss, gerade die Auswahl ist?[/QUOTE]

Hm, wäre schon ziemlich kurios wenn das tatsächlich die Lösung des Problems wäre. Allerdings hab ich die Idee mit der QComboBox bereits aufgegeben. Ich habe mich stattdessen für eine QListView entschieden - die funktioniert sogar mit exakt demselben Listmodel und das ohne die geringste Anpassung :slight_smile:

Aber du hast schon recht, QtJambi ist in der Tat ein etwas exotisches Java-Framework und sonderlich aktiv wird es im Moment auch nicht weiterentwickelt wie mir scheint. Ich kannte es eben von C++ her und war bisher auch immer ziemlich zufrieden damit - besonders der GUI-Designer hat es mir angetan (das war imho immer ein großes Manko von Swing, da hab ich noch keinen einzigen guten Designer gesehen).

Danke auf jeden Fall für deine Bemühungen! :slight_smile: