Hi,
even after changing the name of the Signal still i'm getting error.
*" self.emit(QtCore.SIGNAL("signalTextChanged(list,str)"),names,prefix)
TypeError: Unknown type used to emit a signal: list"*
class LineEditCompleter(QtGui.QLineEdit):
#create custom signal
signalTextChanged=QtCore.Signal(list,str)
def __init__(self,parent=None):
QtGui.QLineEdit.__init__(self,parent)
self.connect(self,QtCore.SIGNAL("textChanged(QString)"),self.text_changed)
def text_changed(self,text):
print "from text_changed:",text
allText=unicode(text)
prefix=allText.split(",")[-1].strip()
names=list()
for name in allText.split(","):
name=unicode(name).strip()
if name!="":
names.append(str(name))
self.emit(QtCore.SIGNAL("signalTextChanged(list,str)"),names,prefix)
def complete_name(self,text):
cursor_pos=self.cursorPosition()
before_text=unicode(self.text())[:cursor_pos]
after_text=unicode(self.text())[cursor_pos:]
prefix_len=len(before_text.split(",")[-1].strip())
self.setText("%s%s,
%s"%(before_text[:cursor_pos-prefix_len],text,after_text))
self.setCursorPosition(cursor_pos-prefix_len+len(text)+2)
class NameCompleter(QtGui.QCompleter):
def __init__(self,names=list(),parent=None):
QtGui.QCompleter.__init__(self,names,parent)
self.names=names
def updateNames(self,names,completion_prefix):
print "from updateNames:",names,completion_prefix
_names=list()
for name in names:
if not self.names.__contains__(name):
_names.append(name)
model=QtGui.QStringListModel(_names,self)
self.setModel(model)
self.setCompletionPrefix(completion_prefix)
if completion_prefix.strip() !="":
self.complete()
def main():
app=QtGui.QApplication(sys.argv)
nameEditor=LineEditCompleter()
names=list()
names.append("ABC")
names.append("DEF")
names.append("AAAA")
completer=NameCompleter(names)
completer.setCaseSensitivity(QtCore.Qt.CaseInsensitive)
QtCore.QObject.connect(nameEditor,QtCore.SIGNAL("signalTextChanged(list,str)"),completer.updateNames)
QtCore.QObject.connect(completer,QtCore.SIGNAL("activated(QString)"),nameEditor.complete_name)
completer.setWidget(nameEditor)
nameEditor.show()
sys.exit(app.exec_())
if __name__=="__main__":
main()
_______________________________________________
PySide mailing list
[email protected]
http://lists.pyside.org/listinfo/pyside