2012-02-22 3 views
7

Sto sviluppando un'applicazione desktop con pyside (qt), voglio accedere (iterare) a tutti i componenti di modifica della linea di QWidget. In qt ho trovato due metodi findChild e findChildren ma non è stato trovato un esempio corretto e il mio codice mostra l'errore, l'oggetto 'form' non ha attributo 'findChild'. Qui 'forma' è la forma QWidget consiste componenti LineEdit, comboboxes, Qpushbuttons eccCome ottenere tutti i componenti figlio di QWidget in pyside/pyqt/qt?

Codice:

lineEdits = form.findChild<QLineEdit>() //This is not working 

lineEdits = form.findChild('QLineEdit) //This also not working 

risposta

16

Le firme di findChild e findChildren sono diverse in PySide/PyQt4 perché non esiste un vero e proprio equivalente alla ++ C sintassi di fusione in Python.

Invece, è necessario passare un tipo (o tuple di tipi) come primo argomento e una stringa opzionale come secondo argomento (per la corrispondenza dello objectName).

Così il vostro esempio dovrebbe apparire qualcosa di simile:

lineEdits = form.findChildren(QtGui.QLineEdit) 

noti che findChild e findChildren sono metodi di QObject - quindi se il modulo non li ha, non può essere un QWidget (perché tutti i widget ereditano QObject).

+0

@ekhumoro potresti per favore aiutarmi qui: http://stackoverflow.com/questions/25164853/how-to-use-findchildren#25165738 – Ejaz