QMetaObject Struct
QMetaObject クラスは、Qt オブジェクトに関するメタ情報を保持しています。詳細...
| ヘッダー: | #include <QMetaObject> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake: | QT += core |
パブリック型
| class | Connection |
パブリック関数
| QMetaClassInfo | classInfo(int index) const |
| int | classInfoCount() const |
| int | classInfoOffset() const |
| const char * | className() const |
| QMetaMethod | constructor(int index) const |
| int | constructorCount() const |
| QMetaEnum | enumerator(int index) const |
| int | enumeratorCount() const |
| int | enumeratorOffset() const |
| int | indexOfClassInfo(const char *name) const |
| int | indexOfConstructor(const char *constructor) const |
| int | indexOfEnumerator(const char *name) const |
| int | indexOfMethod(const char *method) const |
| int | indexOfProperty(const char *name) const |
| int | indexOfSignal(const char *signal) const |
| int | indexOfSlot(const char *slot) const |
| bool | inherits(const QMetaObject *metaObject) const |
(since 6.2) QMetaType | metaType() const |
| QMetaMethod | method(int index) const |
| int | methodCount() const |
| int | methodOffset() const |
(since 6.5) QObject * | newInstance(Args &&... arguments) const |
| QMetaProperty | property(int index) const |
| int | propertyCount() const |
| int | propertyOffset() const |
| const QMetaObject * | superClass() const |
| QMetaProperty | userProperty() const |
静的パブリックメンバー
| bool | checkConnectArgs(const char *signal, const char *method) |
| bool | checkConnectArgs(const QMetaMethod &signal, const QMetaMethod &method) |
(since 6.10) QMetaObject::Connection | connect(const QObject *sender, const QMetaMethod &signal, const QObject *context, Functor functor, Qt::ConnectionType type = Qt::AutoConnection) |
(since 6.10) QMetaObject::Connection | connect(const QObject *sender, const QMetaMethod &signal, const QObject *receiver, PointerToMemberFunction method, Qt::ConnectionType type = Qt::AutoConnection) |
| void | connectSlotsByName(QObject *object) |
(since 6.7) bool | invokeMethod(QObject *context, Functor &&function, Args &&... arguments) |
| bool | invokeMethod(QObject *context, Functor &&function, FunctorReturnType *ret) |
(since 6.5) bool | invokeMethod(QObject *obj, const char *member, Args &&... args) |
(since 6.7) bool | invokeMethod(QObject *context, Functor &&function, QTemplatedMetaMethodReturnArgument<FunctorReturnType> ret, Args &&... arguments) |
(since 6.7) bool | invokeMethod(QObject *context, Functor &&function, Qt::ConnectionType type, Args &&... arguments) |
| bool | invokeMethod(QObject *context, Functor &&function, Qt::ConnectionType type = Qt::AutoConnection, FunctorReturnType *ret = nullptr) |
(since 6.5) bool | invokeMethod(QObject *obj, const char *member, QTemplatedMetaMethodReturnArgument<ReturnArg> ret, Args &&... args) |
(since 6.5) bool | invokeMethod(QObject *obj, const char *member, Qt::ConnectionType type, Args &&... args) |
(since 6.7) bool | invokeMethod(QObject *context, Functor &&function, Qt::ConnectionType type, QTemplatedMetaMethodReturnArgument<FunctorReturnType> ret, Args &&... arguments) |
(since 6.5) bool | invokeMethod(QObject *obj, const char *member, Qt::ConnectionType type, QTemplatedMetaMethodReturnArgument<ReturnArg> ret, Args &&... args) |
| QByteArray | normalizedSignature(const char *method) |
| QByteArray | normalizedType(const char *type) |
マクロ
| QMetaMethodArgument | Q_ARG(Type, const Type &value) |
| QMetaMethodReturnArgument | Q_RETURN_ARG(Type, Type &value) |
詳細な説明
Qt の Qtメタオブジェクトシステムは、シグナルとスロットによるオブジェクト間通信メカニズム、実行時の型情報、および Qt プロパティシステムを担当しています。 アプリケーションで使用される各QObject サブクラスに対して、1つのQMetaObjectインスタンスが作成され、このインスタンスはQObject サブクラスのすべてのメタ情報を格納します。このオブジェクトは、QObject::metaObject()として利用できます。
このクラスは通常、アプリケーションプログラミングには必要ありませんが、スクリプトエンジンやGUIビルダーなどのメタアプリケーションを作成する場合には有用です。
特に役立つと思われる関数は以下の通りです。
- className() はクラスの名前を返します。
- superClass() は、スーパークラスのメタオブジェクトを返します。
- method() およびmethodCount() は、クラスのメタメソッド(シグナル、スロット、その他のinvokable メンバー関数)に関する情報を提供します。
- enumerator() およびenumeratorCount() は、クラスの列挙子に関する情報を提供します。
- propertyCount() およびproperty() は、クラスのプロパティに関する情報を提供します。
- constructor() およびconstructorCount() は、クラスのメタコンストラクタに関する情報を提供します。
インデックス関数indexOfConstructor()、indexOfMethod()、indexOfEnumerator() およびindexOfProperty() は、コンストラクタ、メンバ関数、列挙子、またはプロパティの名前を、メタオブジェクト内のインデックスにマッピングします。たとえば、シグナルをスロットに接続する際、Qt は内部でindexOfMethod() を使用します。
また、クラスには、QMetaClassInfo オブジェクトに格納された、追加のクラス情報の名前と値のペアのリストを持つことができます。ペアの数はclassInfoCount()によって返され、個々のペアはclassInfo()によって返され、indexOfClassInfo()を使用してペアを検索することができます。
注: メタオブジェクトシステムを使用する操作は 、一般的にスレッドセーフです。これは、QMetaObjectが通常、コンパイル時に生成される静的な読み取り専用インスタンスであるためです。ただし、アプリケーションによってメタオブジェクトが動的に変更される場合(例えば、QQmlPropertyMap を使用する場合など)、アプリケーションは該当するメタオブジェクトへのアクセスを明示的に同期させる必要があります。
関連項目: QMetaClassInfo 、QMetaEnum 、QMetaMethod 、QMetaProperty 、QMetaType 、およびメタオブジェクトシステム。
メンバ関数のドキュメント
[static] bool QMetaObject::checkConnectArgs(const char *signal, const char *method)
引数 `signal ` および `method ` が互換性がある場合は `true ` を返し、そうでない場合は `false` を返します。
signal とmethod の両方が正規化されていることが想定されます。
normalizedSignature()も参照してください 。
[static] bool QMetaObject::checkConnectArgs(const QMetaMethod &signal, const QMetaMethod &method)
引数signal とmethod が互換性がある場合はtrue を返し、そうでない場合はfalse を返します。
これはオーバーロードされた関数です。
QMetaClassInfo QMetaObject::classInfo(int index) const
指定されたindex を持つクラス情報のアイテムのメタデータを返します。
例:
class MyClass : public QObject
{
Q_OBJECT
Q_CLASSINFO("author", "Sabrina Schweinsteiger")
Q_CLASSINFO("url", "http://doc.moosesoft.co.uk/1.0/")
public:
//...
};関連項目: classInfoCount()、classInfoOffset()、およびindexOfClassInfo()。
int QMetaObject::classInfoCount() const
このクラスに含まれるクラス情報の項目数を返します。
classInfo()、classInfoOffset()、およびindexOfClassInfo()も参照してください 。
int QMetaObject::classInfoOffset() const
このクラスのクラス情報のオフセット、すなわち、このクラスの最初のクラス情報項目のインデックス位置を返します。
クラスにクラス情報を持つスーパークラスがない場合、オフセットは 0 になります。それ以外の場合は、オフセットは当該クラスのスーパークラスに含まれるすべてのクラス情報項目の合計となります。
classInfo()、classInfoCount()、およびindexOfClassInfo()も参照してください 。
const char *QMetaObject::className() const
クラス名を返します。
superClass()も参照してください 。
[static, since 6.10] template <typename Functor> QMetaObject::Connection QMetaObject::connect(const QObject *sender, const QMetaMethod &signal, const QObject *context, Functor functor, Qt::ConnectionType type = Qt::AutoConnection)
sender functor オブジェクト内の から、指定された の接続を作成し、それを の特定のイベントループに配置します。接続を後で切断するために使用できるハンドルを返します。これは、メタオブジェクトのイントロスペクションから取得したシグナルを、ローカル変数をキャプチャするラムダ式に接続する際に役立ちます。signal type context
注:Qt ::UniqueConnections は、ラムダ式、非メンバ関数、およびファンクタでは機能せず、メンバ関数にのみ適用されます。
スロット関数としては、シグナルと同じかそれ以下の引数を持つ任意の関数またはファンクタを使用できます。 対応するシグナルとスロットの引数は完全に一致している必要があり、この関数では暗黙の型変換や型チェックは処理されません。オーバーロードされたファンクタは、qOverload を使用して明示的に解決する必要があります。signal はシグナルのメタメソッドである必要があり、そうでない場合は無効な接続が返されます。
送信側またはコンテキストが破棄されると、接続は自動的に切断されます。ただし、シグナルが発信される時点で、ファンクタ内で使用されるすべてのオブジェクトがまだ存続していることを確認する必要があります。
この関数は、QMetaObject::connect() をオーバーロードしています。
注: この関数はスレッドセーフです。
この関数は Qt 6.10 で導入されました。
QObject::connect() およびQObject::disconnect()も参照してください 。
[static, since 6.10] template <typename PointerToMemberFunction> QMetaObject::Connection QMetaObject::connect(const QObject *sender, const QMetaMethod &signal, const QObject *receiver, PointerToMemberFunction method, Qt::ConnectionType type = Qt::AutoConnection)
sender オブジェクト内のsignal から、receiver オブジェクト内のmethod への、指定されたtype の接続を作成します。後で接続を切断するために使用できる、その接続へのハンドルを返します。
接続を作成できない場合(例:パラメータが無効な場合など)、Connectionハンドルは無効になります。QMetaObject::Connection をbool型にキャストすることで、その有効性を確認できます。返されたハンドルをQObject::disconnect()に渡すことで、接続を切断できます。
スロットは、シグナルの引数の数がスロットの引数の数以上である場合に、そのシグナルに接続できます。 対応するシグナルとスロットの引数は完全に一致している必要があり、この関数では暗黙の型変換や型チェックは処理されません。オーバーロードされたスロットは、qOverload を使用して明示的に解決する必要があります。signal はシグナルのメタメソッドである必要があります。そうでない場合、無効な接続が返されます。
この関数は、QMetaObject::connect() をオーバーロードしています。
注: この関数はスレッドセーフです。
この関数は Qt 6.10 で導入されました。
QObject::connect() およびQObject::disconnect()も参照してください 。
[static] void QMetaObject::connectSlotsByName(QObject *object)
指定されたobject のすべての子オブジェクトを再帰的に検索し、それらから一致するシグナルを、以下の形式に従うobject のスロットに接続します:
void on_<object name>_<signal name>(<signal parameters>);ここで、あるオブジェクトに、型がQPushButton で、object name がbutton1 である子オブジェクトがあると仮定します。ボタンのclicked() シグナルを受け取るスロットは、次のようになります:
void on_button1_clicked();object 自体に適切に設定されたオブジェクト名がある場合、そのシグナルもそれぞれのスロットに接続されます。
QObject::setObjectName()も参照してください 。
QMetaMethod QMetaObject::constructor(int index) const
指定されたindex を持つコンストラクタのメタデータを返します。
constructorCount() およびnewInstance()も参照してください 。
int QMetaObject::constructorCount() const
このクラスに含まれるコンストラクタの数を返します。
constructor() およびindexOfConstructor()も参照してください 。
QMetaEnum QMetaObject::enumerator(int index) const
指定されたindex を持つ列挙子のメタデータを返します。
enumeratorCount()、enumeratorOffset()、およびindexOfEnumerator()も参照してください 。
int QMetaObject::enumeratorCount() const
このクラスに含まれる列挙子の数を返します。
enumerator()、enumeratorOffset()、およびindexOfEnumerator()も参照してください 。
int QMetaObject::enumeratorOffset() const
このクラスの列挙子オフセット、すなわちこのクラスの最初の列挙子のインデックス位置を返します。
クラスに列挙子を持つスーパークラスがない場合、オフセットは 0 になります。それ以外の場合は、オフセットはクラスのスーパークラスにあるすべての列挙子の合計となります。
enumerator()、enumeratorCount()、およびindexOfEnumerator()も参照してください 。
int QMetaObject::indexOfClassInfo(const char *name) const
クラス情報項目name を検索し、そのインデックスを返します。それ以外の場合は -1 を返します。
classInfo()、classInfoCount()、およびclassInfoOffset()も参照してください 。
int QMetaObject::indexOfConstructor(const char *constructor) const
constructor が見つかった場合はそのインデックスを返し、見つからない場合は -1 を返します。
なお、constructor は、normalizedSignature() によって返されるような正規化された形式でなければならないことに注意してください。
constructor()、constructorCount()、およびnormalizedSignature()も参照してください 。
int QMetaObject::indexOfEnumerator(const char *name) const
name という列挙子が見つかった場合はそのインデックスを返し、見つからない場合は -1 を返す。
enumerator()、enumeratorCount()、およびenumeratorOffset()も参照してください 。
int QMetaObject::indexOfMethod(const char *method) const
method が見つかった場合はそのインデックスを返し、見つからない場合は -1 を返します。
なお、method は、normalizedSignature() によって返されるような正規化された形式でなければならないことに注意してください。
method()、methodCount()、methodOffset()、およびnormalizedSignature()も参照してください 。
int QMetaObject::indexOfProperty(const char *name) const
name というプロパティが見つかった場合、そのインデックスを返します。見つからない場合は -1 を返します。
property()、propertyCount()、およびpropertyOffset()も参照してください 。
int QMetaObject::indexOfSignal(const char *signal) const
signal が見つかった場合はそのインデックスを返し、見つからない場合は -1 を返します。
これは `indexOfMethod()` と同じですが、メソッドが存在してもシグナルではない場合は -1 を返す点が異なります。
signal は、normalizedSignature() によって返されるような正規化された形式でなければならないことに注意してください。
indexOfMethod()、normalizedSignature()、method()、methodCount()、およびmethodOffset()も参照してください 。
int QMetaObject::indexOfSlot(const char *slot) const
slot が見つかった場合はそのインデックスを返し、見つからない場合は -1 を返します。
これは `indexOfMethod()` と同じですが、メソッドが存在してもスロットではない場合は -1 を返す点が異なります。
indexOfMethod()、method()、methodCount()、およびmethodOffset()も参照してください 。
[noexcept] bool QMetaObject::inherits(const QMetaObject *metaObject) const
この `QMetaObject ` で記述されたクラスが、`metaObject` で記述された型を継承している場合は `true ` を返し、そうでない場合は `false` を返します。
型はそれ自体を継承しているとみなされます。
[static, since 6.7] template <typename Functor, typename... Args> bool QMetaObject::invokeMethod(QObject *context, Functor &&function, Args &&... arguments)
[static, since 6.7] template <
typename Functor,
typename FunctorReturnType,
typename... Args
>
bool QMetaObject::invokeMethod(QObject *context, Functor &&function, QTemplatedMetaMethodReturnArgument<FunctorReturnType> ret, Args &&... arguments)
[static, since 6.7] template <typename Functor, typename... Args> bool QMetaObject::invokeMethod(QObject *context, Functor &&function, Qt::ConnectionType type, Args &&... arguments)
[static, since 6.7] template <
typename Functor,
typename FunctorReturnType,
typename... Args
>
bool QMetaObject::invokeMethod(QObject *context, Functor &&function, Qt::ConnectionType type, QTemplatedMetaMethodReturnArgument<FunctorReturnType> ret, Args &&... arguments)
context のイベントループ内で、arguments を引数としてfunction を呼び出します。function は、ファンクタまたはメンバ関数へのポインタです。関数を呼び出すことができた場合は、true を返します。関数呼び出しの戻り値は、ret に格納されます。ret 引数に使用するオブジェクトは、自身のオブジェクトをqReturnArg()に渡すことで取得する必要があります。例:
MyClass *obj = ...;
int result = 0;
QMetaObject::invokeMethod(obj, &MyClass::myMethod, qReturnArg(result), parameter);type が設定されている場合、その接続タイプを使用して関数が呼び出されます。そうでない場合は、Qt::AutoConnection が使用されます。
注: この関数はスレッドセーフです。
これらの関数は Qt 6.7 で導入されました。
[static] template <typename Functor, typename FunctorReturnType> bool QMetaObject::invokeMethod(QObject *context, Functor &&function, FunctorReturnType *ret)
[static] template <typename Functor, typename FunctorReturnType> bool QMetaObject::invokeMethod(QObject *context, Functor &&function, Qt::ConnectionType type = Qt::AutoConnection, FunctorReturnType *ret = nullptr)
context のイベントループ内でfunction を呼び出します。function は、ファンクタまたはメンバ関数へのポインタです。関数を呼び出せた場合はtrue を返します。そのような関数が存在しない場合や、パラメータが一致しなかった場合はfalse を返します。関数呼び出しの戻り値はret に格納されます。
type が設定されている場合、その接続タイプを使用して関数が呼び出されます。そうでない場合は、Qt::AutoConnection が使用されます。
注: この関数はスレッドセーフです。
[static, since 6.5] template <typename... Args> bool QMetaObject::invokeMethod(QObject *obj, const char *member, Args &&... args)
[static, since 6.5] template <typename ReturnArg, typename... Args> bool QMetaObject::invokeMethod(QObject *obj, const char *member, QTemplatedMetaMethodReturnArgument<ReturnArg> ret, Args &&... args)
[static, since 6.5] template <typename... Args> bool QMetaObject::invokeMethod(QObject *obj, const char *member, Qt::ConnectionType type, Args &&... args)
[static, since 6.5] template <typename ReturnArg, typename... Args> bool QMetaObject::invokeMethod(QObject *obj, const char *member, Qt::ConnectionType type, QTemplatedMetaMethodReturnArgument<ReturnArg> ret, Args &&... args)
オブジェクト `obj` に対して、その名前 `member` で識別される、メタオブジェクトシステムに登録されたメソッドを呼び出します。これには、スロット、シグナル、および `Q_INVOKABLE ` メソッドが含まれます。メンバーの呼び出しが可能だった場合は `true ` を返します。そのようなメンバーが存在しない場合、またはパラメータが一致しなかった場合は `false ` を返します。
QTemplatedMetaMethodReturnArgument パラメータを持つオーバーロードの場合、member 関数の呼び出しによる戻り値はret に格納されます。そのようなメンバを持たないオーバーロードの場合、呼び出された関数の戻り値(もしあれば)は破棄されます。 QTemplatedMetaMethodReturnArgument は内部型であるため、直接使用してはなりません。代わりに、qReturnArg() 関数を使用してください。
Qt::ConnectionType type パラメータを持つオーバーロードでは、呼び出しを同期にするか非同期にするかを明示的に選択できます。
- type がQt::DirectConnection の場合、そのメンバは現在のスレッドで直ちに呼び出されます。
- type がQt::QueuedConnection の場合、QEvent が送信され、アプリケーションがobj が作成された、または移動されたスレッドのイベントループに入った時点で、そのメンバが呼び出されます。
- type がQt::BlockingQueuedConnection の場合、Qt::QueuedConnection の場合と同様にメソッドが呼び出されますが、イベントが配信されるまで現在のスレッドがブロックされる点が異なります。この接続タイプを使用して同じスレッド内のオブジェクト間で通信すると、デッドロックが発生します。
- type がQt::AutoConnection の場合、obj が呼び出し元と同じスレッド内にあるときはメンバーが同期的に呼び出され、そうでない場合は非同期的に呼び出されます。これは、type パラメータを持たないオーバーロードの挙動です。
この関数には、シグネチャ全体ではなく、シグナルまたはスロットの名前のみを渡せば十分です。たとえば、QThread 上のquit() スロットを非同期で呼び出すには、次のコードを使用します:
QMetaObject::invokeMethod(thread, "quit", Qt::QueuedConnection);非同期メソッド呼び出しでは、パラメータはコピー可能な型でなければなりません。これは、Qtが引数をコピーして、内部でイベントに格納する必要があるためです。 Qt 6.5 以降、この関数は使用されている型を自動的に登録するようになりました。ただし、その副作用として、前方宣言のみされている型を使用して呼び出しを行うことはできません。また、パラメータとして const 修飾子が付いていない型への参照を使用する非同期呼び出しを行うこともできません。
任意のオブジェクトobj のcompute(QString, int, double) スロットを同期的に呼び出し、その戻り値を取得するには:
QString retVal;
QMetaObject::invokeMethod(obj, "compute", Qt::DirectConnection,
qReturnArg(retVal),
QString("sqrt"), 42, 9.7);「compute」スロットが、指定された順序でQString を1つ、int を1つ、double を1つ正確に受け取らない場合、呼び出しは失敗します。 文字リテラルは厳密に一致する型ではないため、QString の型を明示的に指定する必要があった点に注意してください。もしこのメソッドが代わりにQStringView 、qsizetype 、およびfloat を受け取る場合、呼び出しは次のように記述する必要があります:
QString retVal;
QMetaObject::invokeMethod(obj, "compute", Qt::DirectConnection,
qReturnArg(retVal),
QStringView(u"sqrt"), qsizetype(42), 9.7f);同じ呼び出しは、Q_ARG() およびQ_RETURN_ARG() マクロを使用して、次のように実行することもできます:
QString retVal;
QMetaObject::invokeMethod(obj, "compute", Qt::DirectConnection,
Q_RETURN_ARG(QString, retVal),
Q_ARG(QString, "sqrt"),
Q_ARG(int, 42),
Q_ARG(double, 9.7));これらのマクロは、Qt 6.4 およびそれ以前のバージョンとの互換性を保つために残されており、マクロを使用しないパラメータと自由に混在させて使用できます。これらは、typedef を使用して前方宣言された型をパラメータや戻り値の型として使用するメソッドを呼び出すような、ごく稀な状況で必要になる場合があります。
注: この関数はスレッドセーフです。
これらの関数は Qt 6.5 で導入されました。
関連項目: Q_ARG()、Q_RETURN_ARG()、およびQMetaMethod::invoke()。
[since 6.2] QMetaType QMetaObject::metaType() const
このメタオブジェクトに対応するメタタイプを返します。メタオブジェクトが名前空間に由来する場合、無効なメタタイプが返されます。
この関数は Qt 6.2 で導入されました。
QMetaMethod QMetaObject::method(int index) const
指定されたindex を持つメソッドのメタデータを返します。
methodCount()、methodOffset()、およびindexOfMethod()も参照してください 。
int QMetaObject::methodCount() const
このクラスに含まれるメソッドの数(各基底クラスが提供するメソッドの数を含む)を返します。これには、通常のメンバ関数だけでなく、シグナルやスロットも含まれます。
特定のクラス固有のメソッドを含む `QStringList ` を取得するには、次のようなコードを使用します:
const QMetaObject* metaObject = obj->metaObject();
QStringList methods;
for (int i = metaObject->methodOffset(); i < metaObject->methodCount(); ++i)
methods << QString::fromLatin1(metaObject->method(i).methodSignature());method()、methodOffset()、およびindexOfMethod()も参照してください 。
int QMetaObject::methodOffset() const
このクラスのメソッドオフセット、すなわちこのクラスの最初のメンバ関数のインデックス位置を返します。
このオフセットは、このクラスのスーパークラスに含まれるすべてのメソッドの合計値です(QObject にはdeleteLater()スロットとdestroyed()シグナルがあるため、この値は常に正になります)。
method()、methodCount()、およびindexOfMethod()も参照してください 。
[since 6.5] template <typename... Args> QObject *QMetaObject::newInstance(Args &&... arguments) const
このクラスの新しいインスタンスを生成し、新しいオブジェクトを返します。適切なコンストラクタが見つからない場合は、nullptr を返します。引数arguments の型は、一致するコンストラクタを探すために使用され、その後、シグナル・スロットの接続と同じ方法でそのコンストラクタに渡されます。
なお、Q_INVOKABLE 修飾子で宣言されたコンストラクタのみが、メタオブジェクトシステムを通じて利用可能になることに注意してください。
この関数は Qt 6.5 で導入されました。
constructor()も参照してください 。
[static] QByteArray QMetaObject::normalizedSignature(const char *method)
指定されたmethod のシグネチャを正規化します。
Qtでは、2つのシグナルとスロットが互換性があるかどうかを判断する際に、正規化されたシグネチャを使用します。正規化では、空白を最小限に抑え、適切な場合は「const」を先頭に移動し、値型から「const」を削除し、const参照を値に置き換えます。
checkConnectArgs() およびnormalizedType()も参照してください 。
[static] QByteArray QMetaObject::normalizedType(const char *type)
type を正規化します。
Qt XML による正規化の方法については、QMetaObject::normalizedSignature() を参照してください。
例:
QByteArray normType = QMetaObject::normalizedType(" int const *");
// normType is now "const int*"normalizedSignature()も参照してください 。
QMetaProperty QMetaObject::property(int index) const
指定されたindex を持つプロパティのメタデータを返します。そのようなプロパティが存在しない場合は、nullのQMetaProperty が返されます。
propertyCount()、propertyOffset()、およびindexOfProperty()も参照してください 。
int QMetaObject::propertyCount() const
このクラスに含まれるプロパティの数(各基底クラスから提供されるプロパティの数を含む)を返します。
特定のクラスに固有のプロパティを含む `QStringList ` を取得するには、次のようなコードを使用します:
const QMetaObject* metaObject = obj->metaObject();
QStringList properties;
for (int i = metaObject->propertyOffset(); i < metaObject->propertyCount(); ++i)
properties << QString::fromLatin1(metaObject->property(i).name());property()、propertyOffset()、およびindexOfProperty()も参照してください 。
int QMetaObject::propertyOffset() const
このクラスのプロパティオフセット、すなわちこのクラスの最初のプロパティのインデックス位置を返します。
このオフセットは、クラスのスーパークラスに含まれるすべてのプロパティの合計値です(QObject にはobjectName プロパティがあるため、この値は常に正になります)。
property()、propertyCount()、およびindexOfProperty()も参照してください 。
const QMetaObject *QMetaObject::superClass() const
スーパークラスのメタオブジェクトを返します。そのようなオブジェクトが存在しない場合は、nullptr を返します。
className()も参照してください 。
QMetaProperty QMetaObject::userProperty() const
USER フラグがtrueに設定されているプロパティを返します。
「QMetaProperty::isUser()」も参照してください 。
マクロのドキュメント
QMetaMethodArgument Q_ARG(Type, const Type &value)
このマクロは、Type と、その型に対応するvalue を受け取り、QMetaMethodArgument を返します。この QMetaMethodArgument は、Args &&... 引数とともにテンプレート関数QMetaObject::invokeMethod() に渡すことができます。
Q_RETURN_ARG()も参照してください 。
QMetaMethodReturnArgument Q_RETURN_ARG(Type, Type &value)
このマクロは、Type と、その型のvalue への非const参照を受け取り、QMetaMethodReturnArgumentを返します。この引数は、Args &&... 引数とともに、テンプレートQMetaObject::invokeMethod()に渡すことができます。
Q_ARG()も参照してください 。
© 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.