このページでは

QAxBindable Class

QAxBindable クラスは、QWidget と ActiveX クライアント間のインターフェースを提供します。詳細...

ヘッダー: #include <qaxbindable.h>
CMake: find_package(Qt6 REQUIRED COMPONENTS AxServer)
target_link_libraries(mytarget PRIVATE Qt6::AxServer)
qmake: QT += axserver

パブリック関数

QAxBindable()
virtual ~QAxBindable()
virtual QAxAggregated *createAggregate()
virtual bool readData(QIODevice *source, const QString &format)
void reportError(int code, const QString &src, const QString &desc, const QString &context = QString())
virtual bool writeData(QIODevice *sink)

プロテクトされた関数

IUnknown *clientSite() const
void propertyChanged(const char *property)
bool requestPropertyChange(const char *property)

詳細な説明

このクラスが提供する関数により、ActiveX コントロールはプロパティの変更をクライアントアプリケーションに通知することができます。このクラスの関数を利用するには、コントロールクラスをQWidget (直接または間接的に)およびこのクラスの両方から継承してください。Meta-Object Compilerでは、まずQWidget から継承する必要があります。

class MyActiveX : public QWidget, public QAxBindable
{
    Q_OBJECT
    Q_PROPERTY(int value READ value WRITE setValue)

public:
    MyActiveX(QWidget *parent = 0);
    ...

    int value() const;
    void setValue(int);
};

プロパティの書き込み関数を実装する際は、requestPropertyChange() を使用して、ActiveX クライアントアプリケーションからこのプロパティを変更する許可を取得してください。プロパティが変更されたら、propertyChanged() を呼び出して、ActiveX クライアントアプリケーションに変更を通知します。コントロールで致命的なエラーが発生した場合は、静的関数reportError() を使用してクライアントに通知してください。

clientSite() が返すインターフェースを使用して、ActiveX クライアントを呼び出します。ActiveX コントロールに追加の COM インターフェースを実装するには、createAggregate() を再実装し、QAxAggregated のサブクラスの新しいオブジェクトを返すようにします。

QAxAggregated 、QAxFactory 、およびActiveQt Frameworkも参照してください 。

メンバ関数のドキュメント

QAxBindable::QAxBindable()

空のQAxBindableオブジェクトを生成します。

[virtual noexcept] QAxBindable::~QAxBindable()

QAxBindable オブジェクトを破棄します。

[protected] IUnknown *QAxBindable::clientSite() const

この ActiveX オブジェクトのクライアント側インターフェースへのポインタを返します。クライアント側が設定されていない場合は null を返します。

返されたインターフェースに対してQueryInterface() を呼び出すことで、呼び出したいインターフェースを取得できます。

[virtual] QAxAggregated *QAxBindable::createAggregate()

ActiveX コントロールに追加の COM インターフェースを実装したい場合、または COM インターフェースの代替実装を提供したい場合は、この関数を再実装してください。QAxAggregated のサブクラスである新しいオブジェクトを返してください。

デフォルトの実装では、nullポインタが返されます。

[protected] void QAxBindable::propertyChanged(const char *property)

この関数を呼び出すことで、この ActiveX コントロールをホストしているクライアントに対し、プロパティ `property ` が変更されたことを通知します。

この関数は通常、プロパティの書き込み関数の最後に呼び出されます。

requestPropertyChange()も参照してください 。

[virtual] bool QAxBindable::readData(QIODevice *source, const QString &format)

COM オブジェクトが MIME タイプをサポートしている場合、この関数が呼び出され、format にあるデータsource に基づいて COM オブジェクトが初期化されます。このデータから読み取るには、事前にsource を読み取り用にオープンしておく必要があります。

成功した場合は true を返します。この関数が false を返した場合、ActiveQt はメタオブジェクトシステムを通じてプロパティを設定することでデータを処理します。

この関数を再実装する場合は、writeData() も実装する必要があります。デフォルトの実装では何も行わず、false を返します。

警告: HTMLに埋め込まれたActiveXコントロールは 、object タグのtype およびdata 属性を使用してデータを読み取るか、param タグのリストを使用してプロパティを初期化することができます。param タグが使用される場合、Internet Explorerはdata 属性を無視し、readDataは呼び出されません。

writeData()も参照してください 。

void QAxBindable::reportError(int code, const QString &src, const QString &desc, const QString &context = QString())

クライアントアプリケーションにエラーを報告します。code は、コントロールで定義されたエラーコードです。desc は、アプリケーションのユーザー向けに、人間が読みやすい形で記述されたエラーの説明です。src は、エラーの発生源の名前であり、通常はActiveXサーバー名です。context は、エラーに関する詳細情報が記載されたヘルプファイルの場所です。context が角括弧内の数字(例:[12])で終わっている場合、この数字はヘルプファイル内でコンテキストIDとして解釈されます。

[protected] bool QAxBindable::requestPropertyChange(const char *property)

この関数を呼び出すと、この ActiveX コントロールをホストしているクライアントから、プロパティ `property ` を変更する許可を要求します。クライアントが変更を許可した場合は `true` を返し、そうでない場合は `false` を返します。

この関数は通常、property の書き込み関数内で最初に呼び出され、関数が false を返した場合は書き込みが中止されます。

void MyActiveQt::setText(const QString &text)
{
    if (!requestPropertyChange("text"))
        return;

    // update property

    propertyChanged("text");
}

propertyChanged()も参照してください 。

[virtual] bool QAxBindable::writeData(QIODevice *sink)

COMオブジェクトがMIMEタイプをサポートしている場合、この関数が呼び出され、COMオブジェクトがsink に保存されます。書き込みを行うには、事前にsink を書き込み用にオープンしておく必要があります。

成功した場合は true を返します。関数が false を返した場合、ActiveQt はプロパティ値を保存することでオブジェクトをシリアライズします。

この関数を再実装する場合は、readData() も実装する必要があります。デフォルトの実装は何も行わず、false を返します。

readData()も参照してください 。

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.