カスタムプラグイン(QPluginLoader
がロードされています)を許可するQtアプリケーションがあります。これらのプラグインはいくつかのインターフェイスを実装でき、Q_INTERFACES()
マクロで宣言します。あなたは下のリンクQtのドキュメントを見ればQtプラグイン:プラグインで実装されているすべてのインターフェイスを一覧表示する方法はありますか?
、私は「低レベル」のAPIについて話している: http://doc.qt.io/qt-5/plugins-howto.html
さて、これは私の質問です:私はQPluginLoader
でプラグインをロードした後、ありますそれが実装するすべてのインターフェイスを列挙する方法がありますか?基本的には、プラグインがプラグインをロードするメインアプリケーションからQ_INTERFACES()
マクロに宣言したものを列挙する方法はありますか?
現在のところ、アプリケーションはQt4とQt5の両方で動作しますが、Qt5だけで動作するソリューションも受け入れられます。
Qtは、インターフェイスのメタデータを確実に作成しますが、それを繰り返し処理する方法は見つけられません。 – dtech
@ddriverメタデータは非常に暗黙的に作成されます。mocは、インターフェイス名を知っている場合は、インターフェイスのインスタンスに 'QObject'をキャストできるコードを生成します。データは他の方法では保持されません。( –
)メタシステムは文字列リテラルで動作し、実行時ルックアップを行うので、名前の実際の文字列を格納する必要があります。メタデータの設計における重大な省略は、このデータがより有用な方法で構造化されていないことを意味します。私はそれがすべてのために生成されているのは気に入らず、あなたが望むメタデータの種類 – dtech