// Qt# tutorial 7 // Based on the Qt tutorial // Implemented by Marcus Urban // // This example currently does not funtion properly because custom // signals are not yet implemented. using System; using Qt; [DeclareQtSignal ("valueChanged(int)")] public class LCDRange : TTQVBox { TTQSlider slider; public LCDRange (TTQWidget parent, String name) : base (parent, name) // In C++, parent and name have default values of 0 (null pointer) { TTQLCDNumber lcd = new TTQLCDNumber (2, this, "lcd" ); slider = new TTQSlider (Orientation.Horizontal, this, "slider"); slider.SetRange (0, 99); slider.SetValue (0); Connect ( slider, TQT_SIGNAL ("valueChanged(int)"), lcd, TQT_SLOT ("Display(int)") ); Connect ( slider, TQT_SIGNAL ("valueChanged(int)"), TQT_SIGNAL ("valueChanged(int)")); } public LCDRange (TTQWidget parent) : this (parent, "") {} public LCDRange () : this (null, "") {} // Note that it was necessary to use an empty string ("") // in the above. Using null does not work at runtime. public void SetValue (int value) { slider.SetValue (value); } } public class MyWidget : TTQVBox { MyWidget (TTQWidget parent, String name) : base (parent, name) { TTQPushButton quit = new TTQPushButton ("Quit", this, "quit"); quit.SetFont ( new TTQFont ("Times", 18, TTQFont.Weight.Bold) ); Connect ( quit, TQT_SIGNAL ("clicked()"), qApp, TQT_SLOT ("Quit()") ); TTQGrid grid = new TTQGrid (4, this); LCDRange previous = null; for ( int c =0; c < 4; c++ ) { for ( int r = 0; r < 4; r++ ) { LCDRange lr = new LCDRange (grid); if (previous != null) Connect (lr, TQT_SIGNAL ("valueChanged(int)"), previous, TQT_SLOT ("SetValue(int)") ); previous = lr; } } } public MyWidget (TTQWidget parent) : this (parent, "") {} public MyWidget () : this (null, "") {} } public class Example { public static int Main (String[] args) { TTQApplication a = new TTQApplication (args); MyWidget w = new MyWidget (); a.SetMainWidget (w); w.Show (); return a.Exec (); } }