// Copyright (C) 2015 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause #ifndef QAXWIDGET_H #define QAXWIDGET_H #include #include #include QT_BEGIN_NAMESPACE class QAxAggregated; class QAxClientSite; class QAxWidgetPrivate; class QAxBaseWidget : public QWidget, public QAxObjectInterface { Q_OBJECT Q_PROPERTY(ulong classContext READ classContext WRITE setClassContext) Q_PROPERTY(QString control READ control WRITE setControl RESET resetControl) public: Q_SIGNALS: void exception(int code, const QString &source, const QString &desc, const QString &help); void propertyChanged(const QString &name); void signal(const QString &name, int argc, void *argv); protected: using QWidget::QWidget; QAxBaseWidget(QWidgetPrivate &d, QWidget *parent, Qt::WindowFlags f); }; class QAxWidget : public QAxBaseWidget, public QAxBase { public: explicit QAxWidget(QWidget* parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags()); explicit QAxWidget(const QString &c, QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags()); explicit QAxWidget(IUnknown *iface, QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags()); ~QAxWidget() override; ulong classContext() const override; void setClassContext(ulong classContext) override; QString control() const override; bool setControl(const QString &) override; void resetControl() override; void clear(); bool doVerb(const QString &verb); QSize sizeHint() const override; QSize minimumSizeHint() const override; virtual QAxAggregated *createAggregate(); const QMetaObject *metaObject() const override; int qt_metacall(QMetaObject::Call call, int id, void **v) override; Q_DECL_HIDDEN_STATIC_METACALL static void qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a); void *qt_metacast(const char *) override; protected: bool initialize(IUnknown **) override; virtual bool createHostWindow(bool); bool createHostWindow(bool, const QByteArray&); void changeEvent(QEvent *e) override; void resizeEvent(QResizeEvent *) override; virtual bool translateKeyEvent(int message, int keycode) const; void connectNotify(const QMetaMethod &signal) override; private: Q_DECLARE_PRIVATE(QAxWidget) friend class QAxClientSite; }; template <> inline QAxWidget *qobject_cast(const QObject *o) { void *result = o ? const_cast(o)->qt_metacast("QAxWidget") : nullptr; return static_cast(result); } template <> inline QAxWidget *qobject_cast(QObject *o) { void *result = o ? o->qt_metacast("QAxWidget") : nullptr; return static_cast(result); } QT_END_NAMESPACE #endif // QAXWIDGET_H