1 votos

QStringList() error en plugin de QGIS 2.10

He hecho un Dialog en PyQt para usarlo como un plugin bajo QGIS 2.10

El diálogo funciona bien como una aplicación independiente, pero si trato de llamarlo como un plugin de QGIS, me sale este error:

AttributeError: el objeto 'module' no tiene el atributo 'QStringList'

Hay una pregunta similar ici pero a mí no me funciona.

El formulario está hecho con Qt Designer

Este es un fragmento de mi diálogo:

from qgis.core import *
from PyQt4 import QtCore, QtGui, QtSql

from Ui_BuscadorParcelas import Ui_BuscadorParcelas

# create the dialog for BuscadorParcelas
class BuscadorParcelasDialog(QtGui.QDialog):
    def __init__(self):
    .......................
    def PrepararCuadros(self):
        self.consulta = QtSql.QSqlQuery(self.conexion)      
        if self.consulta:
            for i in range(self.numCamposLineEdit):
                cadenaConsulta = "SELECT DISTINCT "+self.campo[i]+" FROM crcc ORDER BY "+self.campo[i];
                self.consulta.exec_(cadenaConsulta)
                self.ListaValores = QtCore.QStringList()
         ...................................................

Necesito que QStringList() establezca un objeto QCompleter

Completo la respuesta de Mathias Kuhn diciendo que si obtengo los valores de la lista a partir de una consulta a la base de datos, como en mi ejemplo, necesito anteponer unicode para obtener una lista python que QCompleter pueda usar como argumento (la primera línea del siguiente código sustituye a la última línea de la primera)

self.ListaValores = []
while self.consulta.next():
    self.ListaValores.append(unicode(self.consulta.value(0)))
self.completer = QtGui.QCompleter(self.ListaValores, self)

2voto

Michael Puntos 11

QGIS actualizó a la API SIP V2 entre 1.8 y 2.0.

Ver: https://hub.qgis.org/wiki/17/Python_plugin_API_changes_from_18_to_20#Replace-QStringList-with-list

Convertirá de forma transparente algunos tipos (como QString o QList) entre tipos python y Qt.

Así que puedes usar una lista python de objetos str o unicode y pasarla a la API pyqgis y pyqt dondequiera que se espere una QStringList.

listaValores = [u'uno', u'dos', u'tres']
completer = QCompleter(listaValores)

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X