Qt рдореЗрдВ ActiveX- рдирд┐рдпрдВрддреНрд░рдг рдмрдирд╛рдиреЗ рдХрд╛ рдПрдХ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг

рдкрд░рд┐рдЪрдп


рдореБрдЭреЗ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд ActiveX- рдирд┐рдпрдВрддреНрд░рдг рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдХрд╛рдо рд╕реМрдВрдкрд╛ рдЧрдпрд╛ рдерд╛ред рдЪреВрдВрдХрд┐ рд╣рдо C ++ рдХреЛ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдореБрдЦреНрдп рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП C # рдкрд░ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдореИрдВрдиреЗ Qt рдХреЛ рдЪреБрдирдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдореЗрд░реА рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИред

Qt рдкрд░ ActiveX рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдирд╛ рдПрдХ рдХрд╛рдлреА рд╕рд░рд▓ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реИ, QtCreator рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рдХрдИ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ рдЬреЛ рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк ActiveQt рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рдПрдХ )ред

рдПрдХ рдШрдЯрдХ рд▓рд┐рдЦрддреЗ рд╕рдордп, рдореБрдЭреЗ рд╕рд░рд▓ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рдЙрддреНрддрд░ рдЦреЛрдЬрдиреЗ рдореЗрдВ рдмрд╣реБрдд рд╕рдордп рд▓рдЧрд╛рдирд╛ рдкрдбрд╝рддрд╛ рдерд╛, рдЙрдиреНрд╣реЗрдВ рдереЛрдбрд╝рд╛-рдереЛрдбрд╝рд╛ рдХрд░рдХреЗ рдЗрдХрдЯреНрдард╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рдерд╛ред рдирддреАрдЬрддрди, рдореБрдЭреЗ рд╡рд╣ рдорд┐рд▓ рдЧрдпрд╛ рдЬреЛ рдЖрд╡рд╢реНрдпрдХ рдерд╛ рдФрд░ рджреВрд╕рд░реЛрдВ рдХреЗ рд▓рд┐рдП ActiveX- рдирд┐рдпрдВрддреНрд░рдг рд╡рд┐рдХрд╛рд╕ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рддреЗрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рд▓рд┐рдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред

рдореБрдЭреЗ рддреБрд░рдВрдд рдзреНрдпрд╛рди рд╣реЛрдЧрд╛ рдХрд┐ рдореИрдВ рд╕рдВрдкреВрд░реНрдг ActiveQt рддрдХрдиреАрдХ рдХрд╛ рд╡рд░реНрдгрди рдирд╣реАрдВ рдХрд░рддрд╛, рд╡рд┐рд╕реНрддреГрдд рдЬрд╛рдирдХрд╛рд░реА Qt рд╕рд╣рд╛рдпрдХ рдкреНрд░рд▓реЗрдЦрди рдФрд░ рдЗрдВрдЯрд░рдиреЗрдЯ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣рд╛рдВ ) рдореЗрдВ рдкрд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИ, рдпрд╣ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдФрд░ рдХреБрдЫ рдмрд┐рдВрджреБ рд╣реИрдВ рдЬреЛ рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИрдВред


рд╢реБрд░реБрдЖрдд


рддреЛ, рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП, QtSDK рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ (рдореИрдВрдиреЗ MS VisualStudio 2010 рдХреЗ рд╕рд╛рде рд╕рдВрдпреЛрдЬрди рдореЗрдВ рд╡рд╛рдгрд┐рдЬреНрдпрд┐рдХ рд╕рдВрд╕реНрдХрд░рдг рдЪреБрдирд╛)ред

рдПрдХ рдЦрд╛рд▓реА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВред рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, рдЪрд▓реЛ рдПрдХ рдбрд┐рдЬрд┐рдЯрд▓ рдШрдбрд╝реА рдХреЗ рд╕рд╛рде рдПрдХ ActiveX- рдирд┐рдпрдВрддреНрд░рдг рдмрдирд╛рддреЗ рд╣реИрдВ (рдЪрд▓реЛ рдпрд╣рд╛рдВ рд╕реЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд▓реЗрддреЗ рд╣реИрдВ )ред

рд╣рдо рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдбрд┐рдЬрд┐рдЯрд▓ рдШрдбрд╝рд┐рдпреЛрдВ рдХрд╛ рдПрдХ рд╡рд░реНрдЧ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред
рд╣рдо main.cpp рдлрд╝рд╛рдЗрд▓ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рдЗрд╕рдореЗрдВ рд╣рдо QAxFactory рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рд╡рд░реНрдЧ рдмрдирд╛рдПрдВрдЧреЗред рдпрд╣ рд╡рд░реНрдЧ рдПрдХ рдХрд╛рд░рдЦрд╛рдиреЗ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЕрдиреБрд░реЛрдз рдкрд░ рдЙрдиреНрд╣реЗрдВ рдмрдирд╛рддрд╛ рд╣реИред
#include <QAxFactory> #include "clock.h" //      class ActiveQtFactory : public QAxFactory { public: ActiveQtFactory( const QUuid &lib, const QUuid &app ) : QAxFactory( lib, app ) {} //    QStringList featureList() const { QStringList list; //    ,         //      "Clock" list << "Clock"; return list; } //     QObject *createObject(const QString &key) { if ( key == "Clock" ) return new Clock(); //     return 0; } //  -   const QMetaObject *metaObject( const QString &key ) const { if ( key == "Clock" ) return &Clock::staticMetaObject; //     return 0; } }; //   QAXFACTORY_EXPORT( ActiveQtFactory, "{c1de5776-a143-4884-89fc-81a06d04e87d}", "{11403913-dc94-484a-af5a-521f0e93d2ee}" ) 


рдпрджрд┐ рд╣рдо рдЕрдиреНрдп рд╡рд░реНрдЧреЛрдВ рдХреЛ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдЙрдирдХреА рд╣реЗрдбрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдФрд░ ActiveQtFeral рдХрдХреНрд╖рд╛ рдореЗрдВ рд╡рд┐рд╡рд░рдг рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ

рдЕрдм рдЕрдкрдиреЗ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдХреЛ рдирд┐рд░реНрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд▓реЙрдХ рдХреНрд▓рд╛рд╕ рдХреЛ рдЕрдВрддрд┐рдо рд░реВрдк рджреЗрдВ:
рд╢реАрд░реНрд╖ рд▓реЗрдЦ рдореЗрдВ, рдбрд╛рдпрдиреЗрдорд┐рдХ рд▓рд╛рдпрдмреНрд░реЗрд░реА рдХреЗ рд▓рд┐рдП рдореИрдХреНрд░реЛ рдЬреЛрдбрд╝реЗрдВ
 // ........... #include <qglobal.h> #if defined(Clock_LIBRARY) # define Clock_LIBRARY Q_DECL_EXPORT #else # define Clock_LIBRARY Q_DECL_IMPORT #endif class Clock_LIBRARY Clock : public QLCDNumber { // ........... 


рд╡рд░реНрдЧ рдЬрд╛рдирдХрд╛рд░реА рдЬреЛрдбрд╝реЗрдВ
 // .............. Q_OBJECT Q_CLASSINFO("ClassID", "{1edd41d0-e01f-445d-9b4e-78c99ab93acf}") Q_CLASSINFO("InterfaceID", "{8adccb5c-567e-42f6-8b81-f6634409fb1a}") Q_CLASSINFO("EventsID", "{f0a4474f-8c0c-4cdf-985d-8379b26bdd19}") // .............. 


рдкреНрд░рддреНрдпреЗрдХ рд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ ClassID, InterfaceID, EventID рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдЕрдВрддрд┐рдо рдмрд┐рдВрджреБ, рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░реЗрдВ
 TEMPLATE = lib CONFIG += qt qaxserver dll contains(CONFIG, static):DEFINES += QT_NODLL SOURCES = main.cpp \ clock.cpp HEADERS += \ clock.h DEF_FILE = qaxserver.def DEFINES += clock_LIBRARY VERSION = 0.0.0.1 #     INCLUDEPATH += clock TARGET = clock 


рд╕рдВрдХрд▓рди рдХрд░реЗрдВ, рдкреБрд╕реНрддрдХрд╛рд▓рдп рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред
рдпрд╣ рд╕рдм рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИ, рдЕрдм рдХреБрдЫ рдкрд░рд┐рд╡рд░реНрдзрди, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдореИрдВрдиреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рд▓реЗрдЦ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рд╣реИред

рд╕рдВрдкрддреНрддрд┐ рдЬреЛрдбрд╝реЗрдВ

рдЖрдкрдХреЛ рдХреНрд▓рд╛рд╕ рдХреА рдПрдХреНрд╕рдкреЛрд░реНрдЯ рдкреНрд░реЙрдкрд░реНрдЯреА рдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреБрдЫ рдирд╛рдо рд▓реЗрдВ;
рдХреНрд▓реЙрдХ рдХреНрд▓рд╛рд╕ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВ
  // ................. Q_OBJECT Q_CLASSINFO("ClassID", "{1edd41d0-e01f-445d-9b4e-78c99ab93acf}") Q_CLASSINFO("InterfaceID", "{8adccb5c-567e-42f6-8b81-f6634409fb1a}") Q_CLASSINFO("EventsID", "{f0a4474f-8c0c-4cdf-985d-8379b26bdd19}") //   name Q_PROPERTY(QString name READ getName WRITE setName) public: //    QString getName()const { if(name.isEmpty()) return "Clock"; else return name; } //    void setName(const QString &inName){name = inName;} private: QString name; // ....... 


рд╡рд┐рдзрд┐ рдЬреЛрдбрд╝реЗрдВ

рдХреНрд▓реЙрдХ рдХреНрд▓рд╛рд╕ рдореЗрдВ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕реНрд▓реЙрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рддрд░реАрдХреЗ рдЬреЛрдбрд╝реЗ рдЬрд╛рддреЗ рд╣реИрдВ:
 // ....... public slots: void function(int a); QString functionb(const QString &b); // ....... 


рдИрд╡реЗрдВрдЯ рдЬреЛрдбрд╝реЗрдВ

рдпрд╣ рдШрдЯрдирд╛, рдЬрд┐рд╕рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЖрдк AXControl рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд╕рдВрдХреЗрддреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдиреАрдЪреЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдХрд┐рд╕реА рдЕрдиреНрдп рд╡рд░реНрдЧ рд╕реЗ:

 //     signals: void mouseDbClick(int x, int y); //   protected: void mouseDoubleClickEvent(QMouseEvent *event) { QPoint pos = event->pos(); emit mouseDbClick(pos.rx(), pos.ry()); } 


рдирд┐рд╖реНрдХрд░реНрд╖


рдХреНрдпреВрдЯреА рдкреБрд╕реНрддрдХрд╛рд▓рдп рдПрдХ рдорд╣рд╛рди рдЪреАрдЬ рд╣реИ, рдпрд╣ рдмрд╣реБрдд рдХреБрдЫ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЖрдкрдХреЛ рдпрд╣ рд╕реАрдЦрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдХрд┐ рдЗрд╕реЗ рдХреИрд╕реЗ рдкрдХрд╛рдирд╛ рд╣реИред

рдбрд╛рдпрдиреЗрдорд┐рдХ рдХреНрдпреВрдЯреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдмрдирд╛рдиреЗ рдкрд░ рд▓реЗрдЦ рдХреЗ рд▓реЗрдЦрдХ рдХреЛ рд╡рд┐рд╢реЗрд╖ рдзрдиреНрдпрд╡рд╛рджред
рдЙрдкрдпреЛрдЧреА рд╕рдВрд╕рд╛рдзрди рдЬреЛ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддреЗ рд╣реИрдВ doc.crossplatform.ru/qt рдФрд░ qt-project.org

Source: https://habr.com/ru/post/In170607/


All Articles