Icon in QListWidget

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
fon77
User
Beiträge: 17
Registriert: Freitag 10. April 2009, 20:58

Hallöchen!

Ich bin gerade damit beschäftigt, ein kleines FrontEnd für's Usenet zu schreiben. Dabei soll auch ein Konfigurationsdialog angeboten werden, der Einstellungen für Server und Newsgroups etc vorsieht. Das würde ich jetzt gern KDE-typisch so handhaben, dass auf der linken Seite in einem QListWidget eine Reihe Icons für die verschiedenen 'Abteilungen' angezeigt werden, und auf der rechten Seite jeweils die passenden Einstellungen (siehe Screenshot):

Bild

Mein Problem ist, dass die Icons leider nicht angezeigt werden. Ich habe es testweise mit einem Icon für bt_general (Index 0) versucht - klappt aber leider nicht, es steht nach wie vor nur der Name da. Der Code für den Dialog sieht so aus:

Code: Alles auswählen

#! /usr/bin/env python
# coding: utf-8

import nntplib
import ConfigParser
from PyQt4.QtCore import *
from PyQt4.QtGui import *
import dlgoptions_ui

class DlgOptions (QDialog, dlgoptions_ui.Ui_DialogCfg):
    def __init__(self,  parent=None):
        super(DlgOptions, self).__init__(parent)
        self.setupUi (self)
        self.config = ConfigParser.SafeConfigParser ()
        self.config.read ('pyuseup.cfg')
        self.readConfig ()
        self.connect(self.listWidget,SIGNAL('currentRowChanged(int)'),self.setPage)
        self.listWidget.setViewMode(QListView.IconMode)
        self.listWidget.item(0).setIcon(QIcon('/images/new.png'))
        
    def setPage (self, pageIdx):
        self.stackedWidget.setCurrentIndex (pageIdx)
        
    def readConfig (self):
        self.lineEdit.setText (self.config.get('server','address'))
Der Teil des Codes aus der dlgoptions_ui, der für den QListWidget zuständig ist, so:

Code: Alles auswählen

        self.listWidget = QtGui.QListWidget(DialogCfg)
        self.listWidget.setGeometry(QtCore.QRect(5, 5, 120, 340))
        self.listWidget.setIconSize(QtCore.QSize(32, 32))
        self.listWidget.setObjectName("listWidget")
        QtGui.QListWidgetItem(self.listWidget)
        QtGui.QListWidgetItem(self.listWidget)
        QtGui.QListWidgetItem(self.listWidget)
Was fehlt? Ich war der Meinung dass die setIcon-Methode ausreichen würde um das Icon anzuzeigen?

Danke schonmal für die Hilfe!
fon77
philistion
User
Beiträge: 108
Registriert: Sonntag 7. Februar 2010, 14:16

Versuch es mal so:

Code: Alles auswählen

self.listWidget.item(0).setIcon(QIcon(':/images/new.png'))
Ich nehme mal an, du willst eine Ressource verwenden und hast kein Linux-Setup mit /images/new.png im Root-Verzeichnis ;)
fon77
User
Beiträge: 17
Registriert: Freitag 10. April 2009, 20:58

Ach Mensch, manchmal sieht man aber auch die kleinen Fehler nicht... Nein, die Datei liegt nicht im root-Verzeichnis, sondern nur in einem Unterverzeichnis. Wenn ich daraus 'images/new.png' mache, klappt's!

Danke!
Antworten