0

QMetaObject::newInstance メソッドを使用してオブジェクトのコンストラクターを呼び出そうとしています。以下に、使用するコンストラクターの 2 つの例を示します。1 つはポインターを使用し、もう 1 つは基本型のみを使用します。

class A : public QObject {
    Q_OBJECT
public:
    Q_INVOKABLE A(B *b, QObject * parent = 0); // Constructor A
    Q_INVOKABLE A(int x); // Constructor B
}

次を使用してコンストラクター B を呼び出すことができます。

const QMetaObject *metaObj = &A::staticMetaObject;
metaObj->newInstance(Q_ARG(int, 0));

ただし、コンストラクター A の呼び出しは機能しません。

metaObj->newInstance(Q_ARG(B, b_ptr), Q_ARG(QObject, parent));

Q_ARG(B*, b_ptr) を含むいくつかのバリエーションを試しました。さらに、クラス B も QObject から継承します。

4

0 に答える 0