Hi Ben, I have modified the signal emit statement like you said. even though it is still not firing /calling "updateNames" slot in NameCompleter . What i have to do now? please suggest me.
self.emit(QtCore.SIGNAL("signalTextChanged"),names,prefix) QtCore.QObject.connect(nameEditor,QtCore.SIGNAL("signalTextChanged(list,str)"),completer.updateNames) thank you. On Thu, Sep 22, 2011 at 6:36 PM, Ben Breslauer <bbresla...@gmail.com> wrote: > When calling emit, you don't specify the signature. So in > LineEditCompleter.text_changed, you should call > > self.emit(QtCore.SIGNAL("signalTextChanged"),names,prefix) > > In addition, when using old-style signals, you don't need to explicitly > define the signal using QtCore.Signal, Because when you call QObject.emit > (or here, self.emit), it creates the signal dynamically. > > Hope that helps! > > Ben > > On Thu, Sep 22, 2011 at 6:47 PM, Ravi ..........! <hi5frei...@gmail.com>wrote: > >> 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 >> PySide@lists.pyside.org >> http://lists.pyside.org/listinfo/pyside >> >> >
_______________________________________________ PySide mailing list PySide@lists.pyside.org http://lists.pyside.org/listinfo/pyside