Diferència entre revisions de la pàgina «PyQt4: utilitzant Qt Designer 2: diàlegs i ListWidget»
Salta a la navegació
Salta a la cerca
Línia 8: | Línia 8: | ||
== Main Window (class Pantalla) == | == Main Window (class Pantalla) == | ||
− | . | + | Amb Qt-Designer crea la següent MainWindow: |
+ | |||
+ | [[Fitxer:qtlist-main-window.png|400px]] | ||
+ | |||
<br> | <br> | ||
− | === | + | === ListWidget === |
+ | El Widget principal que apareix és un QListWidget, que és el que volem aprendre. Pots llegir aquí algunes pistes de com fer-ho: | ||
* http://www.diotavelli.net/PyQtWiki/Adding%20items%20to%20a%20list%20widget | * http://www.diotavelli.net/PyQtWiki/Adding%20items%20to%20a%20list%20widget | ||
− | + | De fet, és molt similar a utilitzar una llista de Python. | |
<br> | <br> | ||
Revisió del 13:14, 12 feb 2013
Contingut
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 (class Pantalla)
Amb Qt-Designer crea la següent MainWindow:
ListWidget
El Widget principal que apareix és un QListWidget, que és el que volem aprendre. Pots llegir aquí algunes pistes de com fer-ho:
De fet, és molt similar a utilitzar una llista de Python.
Diàleg (class EntraDades)
...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_())