<html><body><div style="color:#000; background-color:#fff; font-family:HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif;font-size:12pt"><div><span class="tab">    Hello, Mat,</span></div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: HelveticaNeue,Helvetica Neue,Helvetica,Arial,Lucida Grande,sans-serif; background-color: transparent; font-style: normal;"><br><span class="tab"></span></div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: HelveticaNeue,Helvetica Neue,Helvetica,Arial,Lucida Grande,sans-serif; background-color: transparent; font-style: normal;"><span class="tab">    I don't know if adding slots as string has ever worked (it's not me who authored that part), I've never tried it. But let me ask you, why do you need it? Why don't you simply use the events that wrap signals? In your case that would be:</span></div><div style="color: rgb(0, 0, 0); font-size:
 16px; font-family: HelveticaNeue,Helvetica Neue,Helvetica,Arial,Lucida Grande,sans-serif; background-color: transparent; font-style: normal;"><span class="tab"><br></span></div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: HelveticaNeue,Helvetica Neue,Helvetica,Arial,Lucida Grande,sans-serif; background-color: transparent; font-style: normal;"><span class="tab">    </span><span class="tab">    </span>dialogB1.Clicked += OnDialogIntClicked; <br></div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: HelveticaNeue,Helvetica Neue,Helvetica,Arial,Lucida Grande,sans-serif; background-color: transparent; font-style: normal;"><br></div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: HelveticaNeue,Helvetica Neue,Helvetica,Arial,Lucida Grande,sans-serif; background-color: transparent; font-style: normal;"><span class="tab">    About custom signals, it's analogous: I haven't
 tried them (and therefore I don't know if they've ever worked) but you can simply use Mono/.NET events instead.</span></div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: HelveticaNeue,Helvetica Neue,Helvetica,Arial,Lucida Grande,sans-serif; background-color: transparent; font-style: normal;"><br><span class="tab"></span></div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: HelveticaNeue,Helvetica Neue,Helvetica,Arial,Lucida Grande,sans-serif; background-color: transparent; font-style: normal;"><span class="tab">    Regards,</span></div><div style="color: rgb(0, 0, 0); font-size: 16px; font-family: HelveticaNeue,Helvetica Neue,Helvetica,Arial,Lucida Grande,sans-serif; background-color: transparent; font-style: normal;"><span class="tab">    Dimitar</span><span class="tab"><br></span></div><div style="display: block;" class="yahoo_quoted"> <br> <br> <div style="font-family: HelveticaNeue,
 Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif; font-size: 12pt;"> <div style="font-family: HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif; font-size: 12pt;"> <div dir="ltr"> <font face="Arial" size="2"> On Tuesday, October 29, 2013 2:32 PM, Mat Arge <argemat1010@gmail.com> wrote:<br> </font> </div>  <div class="y_msg_container">Hy!<br><br>I am unable to use signals/slots which use String as an argument. I created <br>the code below to watch the value of a QInputDialog, If I set its InputMode to <br>IntINput, everything works fine. But if I use the TextInput InputMode I get <br>the error message <br>QSignalSpy: No such signal: 'textValueChanged(string)'<br><br>Even worse, if I try to define my own signal MySignal which uses a string <br>argument, once I emit it I first get the error<br><br>Cannot handle 'string' as slot argument<br><br>promptly followed by a stacktrace, followed by a native
 stacktrace:<br>Stacktrace:<br><br>  at (wrapper managed-to-native) QtCore.SignalInvocation.SignalEmit <br>(string,string,intptr,intptr,int) <0xffffffff><br>  at QtCore.SignalInvocation.Invoke <br>(System.Runtime.Remoting.Messaging.IMessage) <0x002af><br>  at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke <br>(System.Runtime.Remoting.Proxies.RealProxy,System.Runtime.Remoting.Messaging.IMessage,System.Exception&,object[]&) <br><0x003e3><br>  at (wrapper runtime-invoke) <br><Module>.runtime_invoke_object_object_object_Exception&_object[]& <br>(object,intptr,intptr,intptr) <0xffffffff><br>  at (wrapper managed-to-native) object.__icall_wrapper_mono_remoting_wrapper <br>(intptr,intptr) <0xffffffff><br>  at (wrapper remoting-invoke) IMySignals.MySignal (string) <0xffffffff><br>  at Dialog.<Dialog>m__1 () <0x000d2><br>  at (wrapper
 runtime-invoke) object.runtime_invoke_void__this__ <br>(object,intptr,intptr,intptr) <0xffffffff><br>  at (wrapper managed-to-native) System.Reflection.MonoMethod.InternalInvoke <br>(System.Reflection.MonoMethod,object,object[],System.Exception&) <0xffffffff><br>  at System.Reflection.MonoMethod.Invoke <br>(object,System.Reflection.BindingFlags,System.Reflection.Binder,object[],System.Globalization.CultureInfo) <br><0x0013f><br>  at System.Reflection.MethodBase.Invoke (object,object[]) <0x00022><br>  at System.Delegate.DynamicInvokeImpl (object[]) <0x001bf><br>  at System.MulticastDelegate.DynamicInvokeImpl (object[]) <0x00033><br>  at System.Delegate.DynamicInvoke (object[]) <0x00016><br>  at QtCore.SmokeInvocation.InvokeDelegate (System.Delegate,intptr) <0x000bf><br>  at (wrapper native-to-managed) QtCore.SmokeInvocation.InvokeDelegate
 <br>(System.Delegate,intptr) <0xffffffff><br>  at (wrapper managed-to-native) QtCore.SmokeInvocation.CallSmokeMethod <br>(intptr,int,intptr,intptr,int,intptr) <0xffffffff><br>  at QtCore.SmokeInvocation.Invoke (string,string,System.Type,bool,object[]) <br><0x00277><br>  at QtGui.QApplication.Exec () <0x00047><br>  at Dialog.Main (string[]) <0x00047><br>  at (wrapper runtime-invoke) <Module>.runtime_invoke_int_object <br>(object,intptr,intptr,intptr) <0xffffffff><br><br>Native stacktrace:<br><br>        mono() [0x80e903d]<br>        linux-gate.so.1(__kernel_rt_sigreturn+0) [0xb772b410]<br> ...<br><br>Here is my sample code:<br><br>using System;<br>using QtCore;<br>using QtGui;<br><br>public class Dialog : QWidget<br>{<br>  int width = 250;<br>  int height = 200;<br><br><br>  public Dialog()<br>  {<br>    WindowTitle =
 "Input test";<br><br>    Resize(width, height);<br><br>    var vbox = new QVBoxLayout(this);<br>    QPushButton quit = new QPushButton("Quit");<br>    Connect(quit, SIGNAL("clicked()"), () => QCoreApplication.Quit());<br>    vbox.AddWidget(quit);<br>    <br>    QPushButton dialogB1 = new QPushButton("Dialog Int");<br>    Connect(dialogB1, SIGNAL("clicked()"), this, <br>SLOT("OnDialogIntClicked()"));<br>    vbox.AddWidget(dialogB1);<br><br>    QPushButton dialogB2 = new QPushButton("Dialog Text");<br>    Connect(dialogB2, SIGNAL("clicked()"), this, <br>SLOT("OnDialogTextClicked()"));<br>    vbox.AddWidget(dialogB2);<br>   <br>    QPushButton mySig = new QPushButton("MySignal");<br>    Connect(mySig, SIGNAL("clicked()"), () => {Emit.MySignal("Signal emitted <br>at "+DateTime.Now);});<br>   
 vbox.AddWidget(mySig);<br>    <br>    Show();<br>   }<br><br>  [Q_SLOT]<br>    public void OnDialogIntClicked()<br>    {<br>      var dialog = new QInputDialog(this);<br>      dialog.inputMode = QInputDialog.InputMode.IntInput;<br>      dialog.Open();<br>            Connect(dialog, SIGNAL("intValueChanged(int)"), (int i) => <br>{Console.WriteLine("New Int value: '{0}'", i);});<br>    }<br><br>  [Q_SLOT]<br>    public void OnDialogTextClicked()<br>    {<br>      var dialog = new QInputDialog(this);<br>      dialog.inputMode = QInputDialog.InputMode.TextInput;<br>      dialog.Open();<br>      Connect(dialog, SIGNAL("textValueChanged(string)"), (string s) => <br>{Console.WriteLine("New Text value: '{0}'", s);});<br>   
 }<br>  <br>  protected new IMySignals Emit {<br>    get {<br>      return (IMySignals) Q_EMIT;<br>    }<br>  }<br><br><br>   [STAThread]<br>     public static int Main(string[] args)<br>     {<br>       new QApplication(args);<br>       var app = new Dialog();<br>       return QApplication.Exec();<br>     }<br>}<br><br>public interface IMySignals : IQWidgetSignals {<br>        [Q_SIGNAL("mySignal(string)")]<br>        void MySignal(string val);<br>}<br><br><br>cheers<br>Mat<br>_______________________________________________<br>Kde-bindings mailing list<br><a ymailto="mailto:Kde-bindings@kde.org" href="mailto:Kde-bindings@kde.org">Kde-bindings@kde.org</a><br><a href="https://mail.kde.org/mailman/listinfo/kde-bindings"
 target="_blank">https://mail.kde.org/mailman/listinfo/kde-bindings</a><br><br><br></div>  </div> </div>  </div> </div></body></html>