[Mono-list] Qt C# bindings and a simple HelloWorld

Adam Treat manybooby@yahoo.com
Mon, 4 Feb 2002 18:04:22 -0800


--------------Boundary-00=_A3F17617I8RW06NYH4GS
Content-Type: text/plain;
  charset="iso-8859-1"
Content-Transfer-Encoding: 8bit

So I've been mucking about for a bit with some c-sharp bindings to the 
qt-toolkit.  I've been successful with a generic helloworld program.  I think 
I am ready to begin generating some bindings in earnest after a few problems 
are solved:

1.  Not sure how to handle Slots and Signals.  (biggest problem) ;)

2.  I have been using the qtc bindings from kde3 in the pinvoke statements. I 
would like to stop using the libqtc library and just dllimport from libqt but 
the name mangling (see http://www.delorie.com/gnu/docs/gcc/gxxint_15.html) is 
going to have to be accounted for.  Thinking about writing a tool that will 
automatically mangle the dllimport statement.  ie:
	
	From:
	[DllImport("libqtc.so.1.0.0")]
	public static extern Object qt_new_QApplication(int argc, string[] argv);

	To:
	[DllImport("libqt.so.2")]
	public static extern Object __12QApplicationRiPPc(int argc, string[] argv);

3.  I don't know how to use kalyptus (don't know perl) and I am a frankly 
little frightened to go in that direction...  Thinking about using the kdoc 
html output and generating the bindings from that, similar to what the intel 
guys did with the ECMA documentation to c# stubs...  Richard, Miguel, Mike do 
you have some suggestions on the best way to proceed?

Well tell me what you think.

Adam

P.S.  I am primarly a java programmer, with little experience in qt, c++, or 
c.  This is an exercise to hopefully do something useful and allow me to 
learn a little so feel free to offer up some pointers ;)

// qt_HelloWorld.cs - qt-csharp Hello World

namespace QtSamples {

	using Qt;
	using System;

	public class qt_HelloWorld {

		public static int Main (string[] args)
		{

			QApplication a = new QApplication(args);
			QPushButton hello = new QPushButton("Hello world!", 0);
			hello.resize(100, 30);
			a.setMainWidget(hello);
			hello.show();
			return a.exec();

		}
	}
}
--------------Boundary-00=_A3F17617I8RW06NYH4GS
Content-Type: application/x-zip;
  name="qtc-sharp.zip"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="qtc-sharp.zip"

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
xBYAAAAA

--------------Boundary-00=_A3F17617I8RW06NYH4GS--