From bd0f3345a938b35ce6a12f6150373b0955b8dd12 Mon Sep 17 00:00:00 2001 From: Timothy Pearson Date: Sun, 10 Jul 2011 15:24:15 -0500 Subject: Add Qt3 development HEAD version --- doc/html/qaxserver-example-multiple.html | 201 +++++++++++++++++++++++++++++++ 1 file changed, 201 insertions(+) create mode 100644 doc/html/qaxserver-example-multiple.html (limited to 'doc/html/qaxserver-example-multiple.html') diff --git a/doc/html/qaxserver-example-multiple.html b/doc/html/qaxserver-example-multiple.html new file mode 100644 index 0000000..3d55855 --- /dev/null +++ b/doc/html/qaxserver-example-multiple.html @@ -0,0 +1,201 @@ + + + + + +Two simple Qt widgets (in-process) + + + + + + + +
+ +Home + | +All Classes + | +Main Classes + | +Annotated + | +Grouped Classes + | +Functions +

Two simple Qt widgets (in-process)

+ + + +The ActiveX controls in this example are simple QWidget +subclasses reimplementing the paintEvent() method. The classes use +the Q_CLASSINFO macro to +

The example demonstrates the use of the Q_CLASSINFO macro to set +ActiveQt-specific attributes for QObject sub classes, and the use of +the QAXFACTORY_BEGIN, QAXCLASS and QAXFACTORY_END macros. +

+ +

    class QAxWidget1 : public QWidget
+    {
+        Q_OBJECT
+        Q_CLASSINFO("ClassID", "{1D9928BD-4453-4bdd-903D-E525ED17FDE5}")
+        Q_CLASSINFO("InterfaceID", "{99F6860E-2C5A-42ec-87F2-43396F4BE389}")
+        Q_CLASSINFO("EventsID", "{0A3E9F27-E4F1-45bb-9E47-63099BCCD0E3}")
+
The class declaration includes the Q_OBJECT macro to activate Qt's meta object system, and sets COM identifiers for the class using the +Q_CLASSINFO macro. +
        Q_PROPERTY( QColor fillColor READ fillColor WRITE setFillColor )
+    public:
+        QAxWidget1( QWidget *parent = 0, const char *name = 0, WFlags f = 0 )
+            : QWidget( parent, name, f ), fill_color( red )
+        {
+        }
+
+        QColor fillColor() const
+        {
+            return fill_color;
+        }
+        void setFillColor( const QColor &fc )
+        {
+            fill_color = fc;
+            repaint();
+        }
+
+    protected:
+        void paintEvent( QPaintEvent *e )
+        {
+            QPainter paint( this );
+            QRect r = rect();
+            r.addCoords( 10, 10, -10, -10 );
+            paint.fillRect( r, fill_color );
+        }
+
+    private:
+        QColor fill_color;
+    };
+
The control draws a filled rectangle. The fill color is exposed as a +property using the Q_PROPERTY macro. +

+ +

    class QAxWidget2 : public QWidget
+    {
+        Q_OBJECT
+        Q_CLASSINFO("ClassID", "{58139D56-6BE9-4b17-937D-1B1EDEDD5B71}")
+        Q_CLASSINFO("InterfaceID", "{B66280AB-08CC-4dcc-924F-58E6D7975B7D}")
+        Q_CLASSINFO("EventsID", "{D72BACBA-03C4-4480-B4BB-DE4FE3AA14A0}")
+        Q_CLASSINFO("ToSuperClass", "QAxWidget2")
+        Q_CLASSINFO("StockEvents", "yes")
+
The declaration of the second control class uses the Q_CLASSINFO macro +to set the COM identifiers as well as additional COM attributes for the +class. Objects of that class will not expose the QWidget API, and provide +the ActiveX stock events (ie. Click, KeyDown etc.). +
        Q_PROPERTY( int lineWidth READ lineWidth WRITE setLineWidth )
+    public:
+        QAxWidget2( QWidget *parent = 0, const char *name = 0, WFlags f = 0 )
+            : QWidget( parent, name, f ), line_width( 1 )
+        {
+        }
+
+        int lineWidth() const
+        {
+            return line_width;
+        }
+        void setLineWidth( int lw )
+        {
+            line_width = lw;
+            repaint();
+        }
+
+    protected:
+        void paintEvent( QPaintEvent *e )
+        {
+            QPainter paint( this );
+            QPen pen = paint.pen();
+            pen.setWidth( line_width );
+            paint.setPen( pen );
+
+            QRect r = rect();
+            r.addCoords( 10, 10, -10, -10 );
+            paint.drawEllipse( r );
+        }
+
+    private:
+        int line_width;
+    };
+
The control draws a circle. The line width is exposed as a property +using the Q_PROPERTY macro. +

The controls are exposed by the implementation of QAxFactory as provided +by the QAXFACTORY_BEGIN and QAXFACTORY_END macros. + + +

    #include <qaxfactory.h>
+
+    #include "ax1.h"
+    #include "ax2.h"
+
+    QAXFACTORY_BEGIN("{98DE28B6-6CD3-4e08-B9FA-3D1DB43F1D2F}", "{05828915-AD1C-47ab-AB96-D6AD1E25F0E2}")
+
The factory is initialied using the QAXFACTORY_BEGIN macro, providing +the IDs for the application and the type library. +
        QAXCLASS(QAxWidget1)
+        QAXCLASS(QAxWidget2)
+
The classes exposed are listed using the QAXCLASS macro. +
    QAXFACTORY_END()
+
Finally the factory declaration is closed using the QAXFACTORY_END +macro. +

To build the example you must first build the QAxServer library. Then run qmake and your make tool in +examples/multiple. +


+

The demonstration requires your +WebBrowser to support ActiveX controls, and scripting to be enabled. +

+ +

    <script language=javascript>
+    function setColor( form )
+    {
+        Ax1.fillColor = form.colorEdit.value;
+    }
+
+    function setWidth( form )
+    {
+        Ax2.lineWidth = form.widthEdit.value;
+    }
+    </script>
+
+    <p>
+    This is one QWidget subclass:<br>
+    <object ID="Ax1" CLASSID="CLSID:1D9928BD-4453-4bdd-903D-E525ED17FDE5"
+    CODEBASE=http://www.trolltech.com/demos/multipleax.cab>
+    [Object not available! Did you forget to build and register the server?]
+    </object><br>
+    <form>
+    Fill Color: <input type="edit" ID="colorEdit" value = "red">
+    <input type="button" value = "Set" onClick="setColor(this.form)">
+    <input type="button" value = "Hide" onClick="Ax1.hide()">
+    <input type="button" value = "Show" onClick="Ax1.show()">
+    </form>
+
+    <p>
+    This is another QWidget subclass:<br>
+    <object ID="Ax2" CLASSID="CLSID:58139D56-6BE9-4b17-937D-1B1EDEDD5B71"
+    CODEBASE=http://www.trolltech.com/demos/multipleax.cab>
+    [Object not available! Did you forget to build and register the server?]
+    </object><br>
+    <form>
+    Line width: <input type="edit" ID="widthEdit" value = "1">
+    <input type="button" value = "Set" onClick="setWidth(this.form)">
+    </form>
+

See also The QAxServer Examples. + + +


+ +
Copyright © 2007 +TrolltechTrademarks +
Qt 3.3.8
+
+ -- cgit v1.2.3