Home | All Classes | Main Classes | Annotated | Grouped Classes | Functions | ![]() |
It demonstrates how to export existing QWidget classes as ActiveX controls, and the use of QAxFactory together with the QAXFACTORY_EXPORT macro.
The factory implementation returns the list of supported controls, creates controls on request and provides information about the unique IDs of the COM classes and interfaces for each control.
class ActiveQtFactory : public QAxFactory { public: ActiveQtFactory( const QUuid &lib, const QUuid &app ) : QAxFactory( lib, app ) {} QStringList featureList() const { QStringList list; list << "QButton"; list << "QCheckBox"; list << "QRadioButton"; list << "QPushButton"; list << "QToolButton"; return list; } QWidget *create( const QString &key, QWidget *parent, const char *name ) { if ( key == "QButton" ) return new QButton( parent, name ); if ( key == "QCheckBox" ) return new QCheckBox( parent, name ); if ( key == "QRadioButton" ) return new QRadioButton( parent, name ); if ( key == "QPushButton" ) return new QPushButton( parent, name ); if ( key == "QToolButton" ) { QToolButton *tb = new QToolButton( parent, name ); tb->setPixmap( QPixmap(fileopen) ); return tb; } return 0; } QMetaObject *metaObject( const QString &key ) const { if ( key == "QButton" ) return QButton::staticMetaObject(); if ( key == "QCheckBox" ) return QCheckBox::staticMetaObject(); if ( key == "QRadioButton" ) return QRadioButton::staticMetaObject(); if ( key == "QPushButton" ) return QPushButton::staticMetaObject(); if ( key == "QToolButton" ) return QToolButton::staticMetaObject(); return 0; } QUuid classID( const QString &key ) const { if ( key == "QButton" ) return "{23F5012A-7333-43D3-BCA8-836AABC61B4A}"; if ( key == "QCheckBox" ) return "{6E795DE9-872D-43CF-A831-496EF9D86C68}"; if ( key == "QRadioButton" ) return "{AFCF78C8-446C-409A-93B3-BA2959039189}"; if ( key == "QPushButton" ) return "{2B262458-A4B6-468B-B7D4-CF5FEE0A7092}"; if ( key == "QToolButton" ) return "{7c0ffe7a-60c3-4666-bde2-5cf2b54390a1}"; return QUuid(); } QUuid interfaceID( const QString &key ) const { if ( key == "QButton" ) return "{6DA689FB-928F-423C-8632-678C3D3606DB}"; if ( key == "QCheckBox" ) return "{4FD39DD7-2DE0-43C1-A8C2-27C51A052810}"; if ( key == "QRadioButton" ) return "{7CC8AE30-206C-48A3-A009-B0A088026C2F}"; if ( key == "QPushButton" ) return "{06831CC9-59B6-436A-9578-6D53E5AD03D3}"; if ( key == "QToolButton" ) return "{6726080f-d63d-4950-a366-9bf33e5cdf84}"; return QUuid(); } QUuid eventsID( const QString &key ) const { if ( key == "QButton" ) return "{73A5D03F-8ADE-4D84-9AE0-A93B4F85A130}"; if ( key == "QCheckBox" ) return "{FDB6FFBE-56A3-4E90-8F4D-198488418B3A}"; if ( key == "QRadioButton" ) return "{73EE4860-684C-4A66-BF63-9B9EFFA0CBE5}"; if ( key == "QPushButton" ) return "{3CC3F17F-EA59-4B58-BBD3-842D467131DD}"; if ( key == "QToolButton" ) return "{f4d421fd-4ead-4fd9-8a25-440766939639}"; return QUuid(); } };The factory is exported using the QAXFACTORY_EXPORT macro
QAXFACTORY_EXPORT( ActiveQtFactory, "{3B756301-0075-4E40-8BE8-5A81DE2426B7}", "{AB068077-4924-406a-BBAF-42D91C8727DD}" )The implementation of main is just a dummy, but required for the linker.
int main() { return 0; }
To build the example you must first build the QAxServer library. Then run qmake and your make tool in examples/wrapper.
The demonstration requires your WebBrowser to support ActiveX controls, and scripting to be enabled.
<SCRIPT LANGUAGE=VBScript> Sub ToolButton_Clicked() RadioButton.text = InputBox( "Enter something", "Wrapper Demo" ) End Sub Sub PushButton_clicked() MsgBox( "Thank you!" ) End Sub Sub CheckBox_toggled( state ) if state = 0 then CheckBox.text = "Check me!" else CheckBox.text = "Uncheck me!" end if End Sub </SCRIPT> <p> A QPushButton:<br> <object ID="PushButton" CLASSID="CLSID:2B262458-A4B6-468B-B7D4-CF5FEE0A7092" CODEBASE=http://www.trolltech.com/demos/wrapperax.cab> <PARAM NAME="text" VALUE="Click me!"> [Object not available! Did you forget to build and register the server?] </object><br> <p> A QCheckBox:<br> <object ID="CheckBox" CLASSID="CLSID:6E795de9-872d-43cf-a831-496ef9d86c68" CODEBASE=http://www.trolltech.com/demos/wrapperax.cab> <PARAM NAME="text" VALUE="Check me!"> [Object not available! Did you forget to build and register the server?] </object><br> <p> A QToolButton:<br> <object ID="ToolButton" CLASSID="CLSID:7c0ffe7a-60c3-4666-bde2-5cf2b54390a1" CODEBASE=http://www.trolltech.com/demos/wrapperax.cab> [Object not available! Did you forget to build and register the server?] </object><br> <p> A QRadioButton:<br> <object ID="RadioButton" CLASSID="CLSID:afcf78c8-446c-409a-93b3-ba2959039189" CODEBASE=http://www.trolltech.com/demos/wrapperax.cab> <PARAM NAME="text" VALUE="Tune me!"> [Object not available! Did you forget to build and register the server?] </object><br>
See also The QAxServer Examples.
Copyright © 2003 Trolltech | Trademarks | Qt 3.2.3
|