PyQt4: utilitzant Qt Designer 2: diàlegs i ListWidget

De Cacauet Wiki
La revisió el 10:44, 7 feb 2013 per Enric (discussió | contribucions) (Es crea la pàgina amb «== Intro == Requisit: realitzar anterior article PyQt4: utilitzant Qt Designer. Tenir en compte l'arquitectura Model-Vista (Model-View): http://doc.qt.digia.com/stab…».)
(dif) ← Versió més antiga | Versió actual (dif) | Versió més nova → (dif)
Salta a la navegació Salta a la cerca

Intro

Requisit: realitzar anterior article PyQt4: utilitzant Qt Designer.

Tenir en compte l'arquitectura Model-Vista (Model-View): http://doc.qt.digia.com/stable/model-view-programming.html

...TODO...

Main Window

...TODO...

Diàleg

...TODO...

Aplicació: classes derivades i run.py

El codi:

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

from PyQt4 import *
from main import *
from EntraDades import *
import sys

# http://www.diotavelli.net/PyQtWiki/Adding%20items%20to%20a%20list%20widget
# http://zetcode.com/tutorials/pyqt4/dialogs/

app = 0

class EntraDades(QtGui.QDialog,Ui_EntraDades):
    def __init__(self, parent=None):
        QtGui.QDialog.__init__(self,parent)
        self.setupUi(self)

class Pantalla(QtGui.QMainWindow,Ui_Principal):
    def __init__(self, parent=None):
        QtGui.QMainWindow.__init__(self,parent)
        self.setupUi(self)
        
        # llista
        self.dades = list()
        # primer element d'exemple
        self.dades.append("hola que tal")
        self.regeneraView()

    def esborraView(self):
        # OJU! no es pot fer amb un for
        item = self.llista.takeItem( 0 )
        while item:
            del item
            item = self.llista.takeItem( 0 )

    def regeneraView(self):
        self.esborraView()
        for missatge in self.dades:
            item = QtGui.QListWidgetItem( missatge )
            self.llista.addItem( item )

    # SLOTS
    def afegir(self):
        # exemple custom dialog
        dialeg = EntraDades(self)
        ok = dialeg.exec_()
        text = dialeg.text.toPlainText()
        
        # EXEMPLE QINPUTDIALOG
        #text, ok = QtGui.QInputDialog.getText( self, "Diàleg d'entrada", "Entra dades:" )
        
        # processem
        if ok:
            self.dades.append( text )
            #self.llista.addItem( text )
            self.regeneraView()
    
    def eliminar(self):
        # cal esborrar de la view:
        row = self.llista.currentRow()
        item = self.llista.takeItem( row )
        del item
        # ...i del model
        del self.dades[ row ]
        
    def edita(self):
        item = self.llista.currentItem()
        if item:
            self.llista.editItem( item )
        
    def guardar(self):
        print "guardar"
    
    def carregar(self):
        print "carregar"
    
    def sortir(self):
        print "sortint..."
        global app
        app.quit()

if __name__ == "__main__":
    global app
    app = QtGui.QApplication(sys.argv)
    p = Pantalla()
    p.show()
    sys.exit(app.exec_())