<?xml version="1.0" encoding="iso-8859-1"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <!-- qmetaobject.cpp --> <head> <title>Qt 4.6: QMetaMethod Class Reference</title> <link href="classic.css" rel="stylesheet" type="text/css" /> </head> <body> <a name="//apple_ref/cpp/cl//QMetaMethod"></a> <table border="0" cellpadding="0" cellspacing="0" width="100%"> <tr> <td align="left" valign="top" width="32"><a href="http://qt.nokia.com/"><img src="images/qt-logo.png" align="left" border="0" /></a></td> <td width="1"> </td><td class="postheader" valign="center"><a href="index.html"><font color="#004faf">Home</font></a> · <a href="classes.html"><font color="#004faf">All Classes</font></a> · <a href="functions.html"><font color="#004faf">All Functions</font></a> · <a href="overviews.html"><font color="#004faf">Overviews</font></a></td></tr></table><h1 class="title">QMetaMethod Class Reference<br /><span class="small-subtitle">[<a href="qtcore.html">QtCore</a> module]</span> </h1> <p>The QMetaMethod class provides meta-data about a member function. <a href="#details">More...</a></p> <pre> #include <QMetaMethod></pre><ul> <li><a href="qmetamethod-members.html">List of all members, including inherited members</a></li> </ul> <hr /> <a name="public-types"></a> <h2>Public Types</h2> <table class="alignedsummary" border="0" cellpadding="0" cellspacing="0" width="100%"> <tr><td class="memItemLeft" align="right" valign="top">enum </td><td class="memItemRight" valign="bottom"><b><a href="qmetamethod.html#Access-enum">Access</a></b> { Private, Protected, Public }</td></tr> <tr><td class="memItemLeft" align="right" valign="top">enum </td><td class="memItemRight" valign="bottom"><b><a href="qmetamethod.html#MethodType-enum">MethodType</a></b> { Method, Signal, Slot, Constructor }</td></tr> </table> <hr /> <a name="public-functions"></a> <h2>Public Functions</h2> <table class="alignedsummary" border="0" cellpadding="0" cellspacing="0" width="100%"> <tr><td class="memItemLeft" align="right" valign="top">Access </td><td class="memItemRight" valign="bottom"><b><a href="qmetamethod.html#access">access</a></b> () const</td></tr> <tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><b><a href="qmetamethod.html#invoke">invoke</a></b> ( QObject * <i>object</i>, Qt::ConnectionType <i>connectionType</i>, QGenericReturnArgument <i>returnValue</i>, QGenericArgument <i>val0</i> = QGenericArgument( 0 ), QGenericArgument <i>val1</i> = QGenericArgument(), QGenericArgument <i>val2</i> = QGenericArgument(), QGenericArgument <i>val3</i> = QGenericArgument(), QGenericArgument <i>val4</i> = QGenericArgument(), QGenericArgument <i>val5</i> = QGenericArgument(), QGenericArgument <i>val6</i> = QGenericArgument(), QGenericArgument <i>val7</i> = QGenericArgument(), QGenericArgument <i>val8</i> = QGenericArgument(), QGenericArgument <i>val9</i> = QGenericArgument() ) const</td></tr> <tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><b><a href="qmetamethod.html#invoke-2">invoke</a></b> ( QObject * <i>object</i>, QGenericReturnArgument <i>returnValue</i>, QGenericArgument <i>val0</i> = QGenericArgument( 0 ), QGenericArgument <i>val1</i> = QGenericArgument(), QGenericArgument <i>val2</i> = QGenericArgument(), QGenericArgument <i>val3</i> = QGenericArgument(), QGenericArgument <i>val4</i> = QGenericArgument(), QGenericArgument <i>val5</i> = QGenericArgument(), QGenericArgument <i>val6</i> = QGenericArgument(), QGenericArgument <i>val7</i> = QGenericArgument(), QGenericArgument <i>val8</i> = QGenericArgument(), QGenericArgument <i>val9</i> = QGenericArgument() ) const</td></tr> <tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><b><a href="qmetamethod.html#invoke-3">invoke</a></b> ( QObject * <i>object</i>, Qt::ConnectionType <i>connectionType</i>, QGenericArgument <i>val0</i> = QGenericArgument( 0 ), QGenericArgument <i>val1</i> = QGenericArgument(), QGenericArgument <i>val2</i> = QGenericArgument(), QGenericArgument <i>val3</i> = QGenericArgument(), QGenericArgument <i>val4</i> = QGenericArgument(), QGenericArgument <i>val5</i> = QGenericArgument(), QGenericArgument <i>val6</i> = QGenericArgument(), QGenericArgument <i>val7</i> = QGenericArgument(), QGenericArgument <i>val8</i> = QGenericArgument(), QGenericArgument <i>val9</i> = QGenericArgument() ) const</td></tr> <tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><b><a href="qmetamethod.html#invoke-4">invoke</a></b> ( QObject * <i>object</i>, QGenericArgument <i>val0</i> = QGenericArgument( 0 ), QGenericArgument <i>val1</i> = QGenericArgument(), QGenericArgument <i>val2</i> = QGenericArgument(), QGenericArgument <i>val3</i> = QGenericArgument(), QGenericArgument <i>val4</i> = QGenericArgument(), QGenericArgument <i>val5</i> = QGenericArgument(), QGenericArgument <i>val6</i> = QGenericArgument(), QGenericArgument <i>val7</i> = QGenericArgument(), QGenericArgument <i>val8</i> = QGenericArgument(), QGenericArgument <i>val9</i> = QGenericArgument() ) const</td></tr> <tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><b><a href="qmetamethod.html#methodIndex">methodIndex</a></b> () const</td></tr> <tr><td class="memItemLeft" align="right" valign="top">MethodType </td><td class="memItemRight" valign="bottom"><b><a href="qmetamethod.html#methodType">methodType</a></b> () const</td></tr> <tr><td class="memItemLeft" align="right" valign="top">QList<QByteArray> </td><td class="memItemRight" valign="bottom"><b><a href="qmetamethod.html#parameterNames">parameterNames</a></b> () const</td></tr> <tr><td class="memItemLeft" align="right" valign="top">QList<QByteArray> </td><td class="memItemRight" valign="bottom"><b><a href="qmetamethod.html#parameterTypes">parameterTypes</a></b> () const</td></tr> <tr><td class="memItemLeft" align="right" valign="top">const char * </td><td class="memItemRight" valign="bottom"><b><a href="qmetamethod.html#signature">signature</a></b> () const</td></tr> <tr><td class="memItemLeft" align="right" valign="top">const char * </td><td class="memItemRight" valign="bottom"><b><a href="qmetamethod.html#tag">tag</a></b> () const</td></tr> <tr><td class="memItemLeft" align="right" valign="top">const char * </td><td class="memItemRight" valign="bottom"><b><a href="qmetamethod.html#typeName">typeName</a></b> () const</td></tr> </table> <a name="details"></a> <hr /> <h2>Detailed Description</h2> <p>The QMetaMethod class provides meta-data about a member function.</p> <p>A QMetaMethod has a <a href="qmetamethod.html#methodType">methodType</a>(), a <a href="qmetamethod.html#signature">signature</a>(), a list of <a href="qmetamethod.html#parameterTypes">parameterTypes</a>() and <a href="qmetamethod.html#parameterNames">parameterNames</a>(), a return <a href="qmetamethod.html#typeName">typeName</a>(), a <a href="qmetamethod.html#tag">tag</a>(), and an <a href="qmetamethod.html#access">access</a>() specifier. You can use <a href="qmetamethod.html#invoke">invoke</a>() to invoke the method on an arbitrary <a href="qobject.html">QObject</a>.</p> <p>See also <a href="qmetaobject.html">QMetaObject</a>, <a href="qmetaenum.html">QMetaEnum</a>, <a href="qmetaproperty.html">QMetaProperty</a>, and <a href="properties.html">Qt's Property System</a>.</p> <hr /> <h2>Member Type Documentation</h2> <a name="//apple_ref/cpp/tag/QMetaMethod/Access"></a> <a name="//apple_ref/cpp/econst/QMetaMethod/Private"></a> <a name="//apple_ref/cpp/econst/QMetaMethod/Protected"></a> <a name="//apple_ref/cpp/econst/QMetaMethod/Public"></a> <h3 class="fn"><a name="Access-enum"></a>enum QMetaMethod::Access</h3> <p>This enum describes the access level of a method, following the conventions used in C++.</p> <p><table class="valuelist" border="1" cellpadding="2" cellspacing="1" width="40%"> <tr><th width="60%">Constant</th><th width="40%">Value</th></tr> <tr><td valign="top"><tt>QMetaMethod::Private</tt></td><td align="center" valign="top"><tt>0</tt></td></tr> <tr><td valign="top"><tt>QMetaMethod::Protected</tt></td><td align="center" valign="top"><tt>1</tt></td></tr> <tr><td valign="top"><tt>QMetaMethod::Public</tt></td><td align="center" valign="top"><tt>2</tt></td></tr> </table></p> <a name="//apple_ref/cpp/tag/QMetaMethod/MethodType"></a> <a name="//apple_ref/cpp/econst/QMetaMethod/Method"></a> <a name="//apple_ref/cpp/econst/QMetaMethod/Signal"></a> <a name="//apple_ref/cpp/econst/QMetaMethod/Slot"></a> <a name="//apple_ref/cpp/econst/QMetaMethod/Constructor"></a> <h3 class="fn"><a name="MethodType-enum"></a>enum QMetaMethod::MethodType</h3> <p><table class="valuelist" border="1" cellpadding="2" cellspacing="1" width="100%"> <tr><th width="25%">Constant</th><th width="15%">Value</th><th width="60%">Description</th></tr> <tr><td valign="top"><tt>QMetaMethod::Method</tt></td><td align="center" valign="top"><tt>0</tt></td><td valign="top">The function is a plain member function.</td></tr> <tr><td valign="top"><tt>QMetaMethod::Signal</tt></td><td align="center" valign="top"><tt>1</tt></td><td valign="top">The function is a signal.</td></tr> <tr><td valign="top"><tt>QMetaMethod::Slot</tt></td><td align="center" valign="top"><tt>2</tt></td><td valign="top">The function is a slot.</td></tr> <tr><td valign="top"><tt>QMetaMethod::Constructor</tt></td><td align="center" valign="top"><tt>3</tt></td><td valign="top">The function is a constructor.</td></tr> </table></p> <hr /> <h2>Member Function Documentation</h2> <a name="//apple_ref/cpp/instm/QMetaMethod/access"></a> <h3 class="fn"><a name="access"></a><a href="qmetamethod.html#Access-enum">Access</a> QMetaMethod::access () const</h3> <p>Returns the access specification of this method (private, protected, or public).</p> <p>Signals are always protected, meaning that you can only emit them from the class or from a subclass.</p> <p>See also <a href="qmetamethod.html#methodType">methodType</a>().</p> <a name="//apple_ref/cpp/instm/QMetaMethod/invoke"></a> <h3 class="fn"><a name="invoke"></a>bool QMetaMethod::invoke ( <a href="qobject.html">QObject</a> * <i>object</i>, <a href="qt.html#ConnectionType-enum">Qt::ConnectionType</a> <i>connectionType</i>, <a href="qgenericreturnargument.html">QGenericReturnArgument</a> <i>returnValue</i>, <a href="qgenericargument.html">QGenericArgument</a> <i>val0</i> = QGenericArgument( 0 ), <a href="qgenericargument.html">QGenericArgument</a> <i>val1</i> = QGenericArgument(), <a href="qgenericargument.html">QGenericArgument</a> <i>val2</i> = QGenericArgument(), <a href="qgenericargument.html">QGenericArgument</a> <i>val3</i> = QGenericArgument(), <a href="qgenericargument.html">QGenericArgument</a> <i>val4</i> = QGenericArgument(), <a href="qgenericargument.html">QGenericArgument</a> <i>val5</i> = QGenericArgument(), <a href="qgenericargument.html">QGenericArgument</a> <i>val6</i> = QGenericArgument(), <a href="qgenericargument.html">QGenericArgument</a> <i>val7</i> = QGenericArgument(), <a href="qgenericargument.html">QGenericArgument</a> <i>val8</i> = QGenericArgument(), <a href="qgenericargument.html">QGenericArgument</a> <i>val9</i> = QGenericArgument() ) const</h3> <p>Invokes this method on the object <i>object</i>. Returns true if the member could be invoked. Returns false if there is no such member or the parameters did not match.</p> <p>The invocation can be either synchronous or asynchronous, depending on the <i>connectionType</i>:</p> <ul> <li>If <i>connectionType</i> is <a href="qt.html#ConnectionType-enum">Qt::DirectConnection</a>, the member will be invoked immediately.</li> <li>If <i>connectionType</i> is <a href="qt.html#ConnectionType-enum">Qt::QueuedConnection</a>, a <a href="qevent.html">QEvent</a> will be posted and the member is invoked as soon as the application enters the main event loop.</li> <li>If <i>connectionType</i> is <a href="qt.html#ConnectionType-enum">Qt::AutoConnection</a>, the member is invoked synchronously if <i>object</i> lives in the same thread as the caller; otherwise it will invoke the member asynchronously.</li> </ul> <p>The return value of this method call is placed in <i>returnValue</i>. If the invocation is asynchronous, the return value cannot be evaluated. You can pass up to ten arguments (<i>val0</i>, <i>val1</i>, <i>val2</i>, <i>val3</i>, <i>val4</i>, <i>val5</i>, <i>val6</i>, <i>val7</i>, <i>val8</i>, and <i>val9</i>) to this method call.</p> <p><a href="qgenericargument.html">QGenericArgument</a> and <a href="qgenericreturnargument.html">QGenericReturnArgument</a> are internal helper classes. Because signals and slots can be dynamically invoked, you must enclose the arguments using the <a href="qmetaobject.html#Q_ARG">Q_ARG</a>() and <a href="qmetaobject.html#Q_RETURN_ARG">Q_RETURN_ARG</a>() macros. <a href="qmetaobject.html#Q_ARG">Q_ARG</a>() takes a type name and a const reference of that type; <a href="qmetaobject.html#Q_RETURN_ARG">Q_RETURN_ARG</a>() takes a type name and a non-const reference.</p> <p>To asynchronously invoke the <a href="qabstractbutton.html#animateClick">animateClick()</a> slot on a <a href="qpushbutton.html">QPushButton</a>:</p> <pre> int methodIndex = pushButton->metaObject()->indexOfMethod("animateClick()"); QMetaMethod method = metaObject->method(methodIndex); method.invoke(pushButton, Qt::QueuedConnection);</pre> <p>With asynchronous method invocations, the parameters must be of types that are known to Qt's meta-object system, because Qt needs to copy the arguments to store them in an event behind the scenes. If you try to use a queued connection and get the error message</p> <pre> QMetaMethod::invoke: Unable to handle unregistered datatype 'MyType'</pre> <p>call <a href="qmetatype.html#qRegisterMetaType">qRegisterMetaType</a>() to register the data type before you call QMetaMethod::invoke().</p> <p>To synchronously invoke the <tt>compute(QString, int, double)</tt> slot on some arbitrary object <tt>obj</tt> retrieve its return value:</p> <pre> QString retVal; QByteArray normalizedSignature = QMetaObject::normalizedSignature("compute(QString, int, double)"); int methodIndex = obj->metaObject()->indexOfMethod(normalizedSignature); QMetaMethod method = metaObject->method(methodIndex); method.invoke(obj, Qt::DirectConnection, Q_RETURN_ARG(QString, retVal), Q_ARG(QString, "sqrt"), Q_ARG(int, 42), Q_ARG(double, 9.7));</pre> <p><a href="qmetaobject.html#normalizedSignature">QMetaObject::normalizedSignature</a>() is used here to ensure that the format of the signature is what invoke() expects. E.g. extra whitespace is removed.</p> <p>If the "compute" slot does not take exactly one <a href="qstring.html">QString</a>, one int and one double in the specified order, the call will fail.</p> <p>See also <a href="qmetaobject.html#Q_ARG">Q_ARG</a>(), <a href="qmetaobject.html#Q_RETURN_ARG">Q_RETURN_ARG</a>(), <a href="qmetatype.html#qRegisterMetaType">qRegisterMetaType</a>(), and <a href="qmetaobject.html#invokeMethod">QMetaObject::invokeMethod</a>().</p> <h3 class="fn"><a name="invoke-2"></a>bool QMetaMethod::invoke ( <a href="qobject.html">QObject</a> * <i>object</i>, <a href="qgenericreturnargument.html">QGenericReturnArgument</a> <i>returnValue</i>, <a href="qgenericargument.html">QGenericArgument</a> <i>val0</i> = QGenericArgument( 0 ), <a href="qgenericargument.html">QGenericArgument</a> <i>val1</i> = QGenericArgument(), <a href="qgenericargument.html">QGenericArgument</a> <i>val2</i> = QGenericArgument(), <a href="qgenericargument.html">QGenericArgument</a> <i>val3</i> = QGenericArgument(), <a href="qgenericargument.html">QGenericArgument</a> <i>val4</i> = QGenericArgument(), <a href="qgenericargument.html">QGenericArgument</a> <i>val5</i> = QGenericArgument(), <a href="qgenericargument.html">QGenericArgument</a> <i>val6</i> = QGenericArgument(), <a href="qgenericargument.html">QGenericArgument</a> <i>val7</i> = QGenericArgument(), <a href="qgenericargument.html">QGenericArgument</a> <i>val8</i> = QGenericArgument(), <a href="qgenericargument.html">QGenericArgument</a> <i>val9</i> = QGenericArgument() ) const</h3> <p>This function overloads <a href="qmetamethod.html#invoke">invoke</a>().</p> <p>This overload always invokes this method using the connection type <a href="qt.html#ConnectionType-enum">Qt::AutoConnection</a>.</p> <h3 class="fn"><a name="invoke-3"></a>bool QMetaMethod::invoke ( <a href="qobject.html">QObject</a> * <i>object</i>, <a href="qt.html#ConnectionType-enum">Qt::ConnectionType</a> <i>connectionType</i>, <a href="qgenericargument.html">QGenericArgument</a> <i>val0</i> = QGenericArgument( 0 ), <a href="qgenericargument.html">QGenericArgument</a> <i>val1</i> = QGenericArgument(), <a href="qgenericargument.html">QGenericArgument</a> <i>val2</i> = QGenericArgument(), <a href="qgenericargument.html">QGenericArgument</a> <i>val3</i> = QGenericArgument(), <a href="qgenericargument.html">QGenericArgument</a> <i>val4</i> = QGenericArgument(), <a href="qgenericargument.html">QGenericArgument</a> <i>val5</i> = QGenericArgument(), <a href="qgenericargument.html">QGenericArgument</a> <i>val6</i> = QGenericArgument(), <a href="qgenericargument.html">QGenericArgument</a> <i>val7</i> = QGenericArgument(), <a href="qgenericargument.html">QGenericArgument</a> <i>val8</i> = QGenericArgument(), <a href="qgenericargument.html">QGenericArgument</a> <i>val9</i> = QGenericArgument() ) const</h3> <p>This function overloads <a href="qmetamethod.html#invoke">invoke</a>().</p> <p>This overload can be used if the return value of the member is of no interest.</p> <h3 class="fn"><a name="invoke-4"></a>bool QMetaMethod::invoke ( <a href="qobject.html">QObject</a> * <i>object</i>, <a href="qgenericargument.html">QGenericArgument</a> <i>val0</i> = QGenericArgument( 0 ), <a href="qgenericargument.html">QGenericArgument</a> <i>val1</i> = QGenericArgument(), <a href="qgenericargument.html">QGenericArgument</a> <i>val2</i> = QGenericArgument(), <a href="qgenericargument.html">QGenericArgument</a> <i>val3</i> = QGenericArgument(), <a href="qgenericargument.html">QGenericArgument</a> <i>val4</i> = QGenericArgument(), <a href="qgenericargument.html">QGenericArgument</a> <i>val5</i> = QGenericArgument(), <a href="qgenericargument.html">QGenericArgument</a> <i>val6</i> = QGenericArgument(), <a href="qgenericargument.html">QGenericArgument</a> <i>val7</i> = QGenericArgument(), <a href="qgenericargument.html">QGenericArgument</a> <i>val8</i> = QGenericArgument(), <a href="qgenericargument.html">QGenericArgument</a> <i>val9</i> = QGenericArgument() ) const</h3> <p>This function overloads <a href="qmetamethod.html#invoke">invoke</a>().</p> <p>This overload invokes this method using the connection type <a href="qt.html#ConnectionType-enum">Qt::AutoConnection</a> and ignores return values.</p> <a name="//apple_ref/cpp/instm/QMetaMethod/methodIndex"></a> <h3 class="fn"><a name="methodIndex"></a>int QMetaMethod::methodIndex () const</h3> <p>Returns this method's index.</p> <p>This function was introduced in Qt 4.6.</p> <a name="//apple_ref/cpp/instm/QMetaMethod/methodType"></a> <h3 class="fn"><a name="methodType"></a><a href="qmetamethod.html#MethodType-enum">MethodType</a> QMetaMethod::methodType () const</h3> <p>Returns the type of this method (signal, slot, or method).</p> <p>See also <a href="qmetamethod.html#access">access</a>().</p> <a name="//apple_ref/cpp/instm/QMetaMethod/parameterNames"></a> <h3 class="fn"><a name="parameterNames"></a><a href="qlist.html">QList</a><<a href="qbytearray.html">QByteArray</a>> QMetaMethod::parameterNames () const</h3> <p>Returns a list of parameter names.</p> <p>See also <a href="qmetamethod.html#parameterTypes">parameterTypes</a>() and <a href="qmetamethod.html#signature">signature</a>().</p> <a name="//apple_ref/cpp/instm/QMetaMethod/parameterTypes"></a> <h3 class="fn"><a name="parameterTypes"></a><a href="qlist.html">QList</a><<a href="qbytearray.html">QByteArray</a>> QMetaMethod::parameterTypes () const</h3> <p>Returns a list of parameter types.</p> <p>See also <a href="qmetamethod.html#parameterNames">parameterNames</a>() and <a href="qmetamethod.html#signature">signature</a>().</p> <a name="//apple_ref/cpp/instm/QMetaMethod/signature"></a> <h3 class="fn"><a name="signature"></a>const char * QMetaMethod::signature () const</h3> <p>Returns the signature of this method (e.g., <tt>setValue(double)</tt>).</p> <p>See also <a href="qmetamethod.html#parameterTypes">parameterTypes</a>() and <a href="qmetamethod.html#parameterNames">parameterNames</a>().</p> <a name="//apple_ref/cpp/instm/QMetaMethod/tag"></a> <h3 class="fn"><a name="tag"></a>const char * QMetaMethod::tag () const</h3> <p>Returns the tag associated with this method.</p> <p>Tags are special macros recognized by <tt>moc</tt> that make it possible to add extra information about a method. For the moment, <tt>moc</tt> doesn't support any special tags.</p> <a name="//apple_ref/cpp/instm/QMetaMethod/typeName"></a> <h3 class="fn"><a name="typeName"></a>const char * QMetaMethod::typeName () const</h3> <p>Returns the return type of this method, or an empty string if the return type is <i>void</i>.</p> <p /><address><hr /><div align="center"> <table width="100%" cellspacing="0" border="0"><tr class="address"> <td width="40%" align="left">Copyright © 2010 Nokia Corporation and/or its subsidiary(-ies)</td> <td width="20%" align="center"><a href="trademarks.html">Trademarks</a></td> <td width="40%" align="right"><div align="right">Qt 4.6.3</div></td> </tr></table></div></address></body> </html>