Seite 1 von 1

Image in TableWidget

Verfasst: Montag 24. Januar 2011, 00:06
von solar22
Hallo!

Wie ist es möglich in einer Tabellenzelle ein Bild darzustellen? :K

Gruß!

solar22

Re: Image in TableWidget

Verfasst: Montag 24. Januar 2011, 00:49
von anogayales
Was für ein GUI Toolkit verwendest du denn überhaupt?

Grüße,
anogayales

Re: Image in TableWidget

Verfasst: Montag 24. Januar 2011, 00:51
von solar22
Ich benutze PyQt4.

Re: Image in TableWidget

Verfasst: Montag 24. Januar 2011, 10:47
von Hyperion
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

Re: Image in TableWidget

Verfasst: Montag 24. Januar 2011, 10:53
von ichisich
Wenn ein Icon für dich ein Bild ist, Antwort Ja:

Code: Alles auswählen

QTableWidgetItem::setIcon ( const QIcon & icon )
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ß

Re: Image in TableWidget

Verfasst: Montag 24. Januar 2011, 10:53
von Hyperion
Wenn das nicht reicht, wird es komplizierter, da man dann vermutlich einen eigenen Delegate schreiben muss.

Re: Image in TableWidget

Verfasst: Montag 24. Januar 2011, 11:04
von ichisich
@Hyperion
Greift der Delegate nicht nur beim Editieren oder Mausdrüber etc. der View ?

Re: Image in TableWidget

Verfasst: Montag 24. Januar 2011, 11:24
von Hyperion
ichisich hat geschrieben:@Hyperion
Greift der Delegate nicht nur beim Editieren oder Mausdrüber etc. der View ?
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.

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 :-)

Re: Image in TableWidget

Verfasst: Dienstag 25. Januar 2011, 16:52
von ichisich
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.

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)
wäre eine Möglichkeit.

Gruß