Hallo!
Wie ist es möglich in einer Tabellenzelle ein Bild darzustellen? :K
Gruß!
solar22
Image in TableWidget
-
- User
- Beiträge: 456
- Registriert: Mittwoch 15. April 2009, 14:11
Was für ein GUI Toolkit verwendest du denn überhaupt?
Grüße,
anogayales
Grüße,
anogayales
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Du meinst in einer Zelle eines TableViews? Da solltest Du Dir zuerst einmal den MVC-Guide aus der Qt Doku durcharbeiten. Dann kannst Du daran gehen, Dir ein eigenes Model zu schreiben, das vermutlich auf QTableView basiert und die data()-Methode entsprechend überschreibt.
lunar hat dazu auch mal etwas implementiert:
https://bitbucket.org/lunar/snippets/sr ... istview.py
lunar hat dazu auch mal etwas implementiert:
https://bitbucket.org/lunar/snippets/sr ... istview.py
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
Wenn ein Icon für dich ein Bild ist, Antwort Ja:
Aber wenn ich micht recht erinner gibt es Einschränkungen bei der Größe.
Ich hab aber in der QIcon-Klasse auf die Schnelle nichts dazu gefunden.
Vielleicht langt dir das schon ?
Gruß
Code: Alles auswählen
QTableWidgetItem::setIcon ( const QIcon & icon )
Ich hab aber in der QIcon-Klasse auf die Schnelle nichts dazu gefunden.
Vielleicht langt dir das schon ?
Gruß
Zuletzt geändert von ichisich am Montag 24. Januar 2011, 10:54, insgesamt 1-mal geändert.
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Wenn das nicht reicht, wird es komplizierter, da man dann vermutlich einen eigenen Delegate schreiben muss.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Na Du musst ja irgend wie eine paint()-Methode überschreiben und bevor ich da einen ganzen View angehe, hätte ich eben an einen Delegate gedacht, der sich ja nur um einzelne Zellen kümmern muss.ichisich hat geschrieben:@Hyperion
Greift der Delegate nicht nur beim Editieren oder Mausdrüber etc. der View ?
Das Beispiel aus der Qt-Doku zeigt dieses Vorgehen.
Nur weil ein Delegate sich auch um User-Interaktion kümmert, muss man das ja nicht nutzen

Vielleicht belehrt mich lunar aber auch eines besseren und zeigt einen alternativen Weg auf (ggf. eben über das Subclassing eines TableViews).
Eines ist aber sicher: Man braucht in jedem Falle ein eigenes Model

encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
Hab aus interesse bisschen gebastelt.
Mit dem Delegate und der überschriebenen paint-Methode hab ich zwar das Bild gezeichnet bekommen aber immeer nur in der ersten Zelle.
Naja habs dann auch nicht weiter verfolgt aber bin dann auf
das hier gestoßen.
wäre eine Möglichkeit.
Gruß
Mit dem Delegate und der überschriebenen paint-Methode hab ich zwar das Bild gezeichnet bekommen aber immeer nur in der ersten Zelle.
Naja habs dann auch nicht weiter verfolgt aber bin dann auf
das hier gestoßen.
Code: Alles auswählen
pixmap = QtGui.QPixmap("./ein_bild.png")
widget = QtGui.QLabel(main_win)
widget.setPixmap(pixmap)
widget.resize(pixmap.size())
main_win.tableWidget.setCellWidget(0,0,widget)
main_win.tableWidget.resizeColumnToContents (0)
main_win.tableWidget.resizeRowToContents (0)
Gruß