-
首页
-
PyQt 4.11.4
-
所有类
-
模块
QMetaMethod Class Reference
[
QtCore
module]
The QMetaMethod class provides meta-data about a member
函数。
更多...
类型
-
enum
Access
{ Private, Protected, Public }
-
enum
MethodType
{ Method, Signal, Slot, Constructor }
方法
-
__init__
(
self
)
-
__init__
(
self
, QMetaMethod)
-
Access
access
(
self
)
-
object
invoke
(
self
, QObject
object
, Qt.ConnectionType
connectionType
, QGenericReturnArgument
returnValue
, QGenericArgument
value0
= QGenericArgument(0,0), QGenericArgument
value1
= QGenericArgument(0,0), QGenericArgument
value2
= QGenericArgument(0,0), QGenericArgument
value3
= QGenericArgument(0,0), QGenericArgument
value4
= QGenericArgument(0,0), QGenericArgument
value5
= QGenericArgument(0,0), QGenericArgument
value6
= QGenericArgument(0,0), QGenericArgument
value7
= QGenericArgument(0,0), QGenericArgument
value8
= QGenericArgument(0,0), QGenericArgument
value9
= QGenericArgument(0,0))
-
object
invoke
(
self
, QObject
object
, QGenericReturnArgument
returnValue
, QGenericArgument
value0
= QGenericArgument(0,0), QGenericArgument
value1
= QGenericArgument(0,0), QGenericArgument
value2
= QGenericArgument(0,0), QGenericArgument
value3
= QGenericArgument(0,0), QGenericArgument
value4
= QGenericArgument(0,0), QGenericArgument
value5
= QGenericArgument(0,0), QGenericArgument
value6
= QGenericArgument(0,0), QGenericArgument
value7
= QGenericArgument(0,0), QGenericArgument
value8
= QGenericArgument(0,0), QGenericArgument
value9
= QGenericArgument(0,0))
-
object
invoke
(
self
, QObject
object
, Qt.ConnectionType
connectionType
, QGenericArgument
value0
= QGenericArgument(0,0), QGenericArgument
value1
= QGenericArgument(0,0), QGenericArgument
value2
= QGenericArgument(0,0), QGenericArgument
value3
= QGenericArgument(0,0), QGenericArgument
value4
= QGenericArgument(0,0), QGenericArgument
value5
= QGenericArgument(0,0), QGenericArgument
value6
= QGenericArgument(0,0), QGenericArgument
value7
= QGenericArgument(0,0), QGenericArgument
value8
= QGenericArgument(0,0), QGenericArgument
value9
= QGenericArgument(0,0))
-
object
invoke
(
self
, QObject
object
, QGenericArgument
value0
= QGenericArgument(0,0), QGenericArgument
value1
= QGenericArgument(0,0), QGenericArgument
value2
= QGenericArgument(0,0), QGenericArgument
value3
= QGenericArgument(0,0), QGenericArgument
value4
= QGenericArgument(0,0), QGenericArgument
value5
= QGenericArgument(0,0), QGenericArgument
value6
= QGenericArgument(0,0), QGenericArgument
value7
= QGenericArgument(0,0), QGenericArgument
value8
= QGenericArgument(0,0), QGenericArgument
value9
= QGenericArgument(0,0))
-
int
methodIndex
(
self
)
-
MethodType
methodType
(
self
)
-
list-of-QByteArray
parameterNames
(
self
)
-
list-of-QByteArray
parameterTypes
(
self
)
-
str
signature
(
self
)
-
str
tag
(
self
)
-
str
typeName
(
self
)
详细描述
The QMetaMethod class provides meta-data about a member
函数。
A QMetaMethod has a
methodType
(), a
signature
(), a list of
parameterTypes
() 和
parameterNames
(), a return
typeName
(), a
tag
(), and an
access
() specifier. You can use
invoke
() to invoke the method
on an arbitrary
QObject
.
A method will only be registered with the meta-object system if
it is a slot, a signal, or declared with the
Q_INVOKABLE
macro. Constructors can
also be registered with
Q_INVOKABLE
.
类型文档编制
QMetaMethod.Access
This enum describes the access level of a method, following the
conventions used in C++.
|
常量
|
值
|
|
QMetaMethod.Private
|
0
|
|
QMetaMethod.Protected
|
1
|
|
QMetaMethod.Public
|
2
|
QMetaMethod.MethodType
|
常量
|
值
|
描述
|
|
QMetaMethod.Method
|
0
|
The function is a plain member function.
|
|
QMetaMethod.Signal
|
1
|
The function is a signal.
|
|
QMetaMethod.Slot
|
2
|
The function is a slot.
|
|
QMetaMethod.Constructor
|
3
|
The function is a constructor.
|
方法文档编制
QMetaMethod.__init__ (
self
)
QMetaMethod.__init__ (
self
,
QMetaMethod
)
Access
QMetaMethod.access (
self
)
Returns the access specification of this method (private,
protected, or public).
Signals are always protected, meaning that you can only emit
them from the class or from a subclass.
另请参阅
methodType
().
Invokes this method on the object
object
. Returns true if
the member could be invoked. Returns false if there is no such
member or the parameters did not match.
The invocation can be either synchronous or asynchronous,
depending on the
connectionType
:
-
若
connectionType
is
Qt.DirectConnection
, the member
will be invoked immediately.
-
若
connectionType
is
Qt.QueuedConnection
,
QEvent
will be posted and the member is invoked
as soon as the application enters the main event loop.
-
若
connectionType
is
Qt.AutoConnection
, the member is
invoked synchronously if
object
lives in the same thread as
the caller; otherwise it will invoke the member
asynchronously.
The return value of this method call is placed in
returnValue
. If the invocation is asynchronous, the return
value cannot be evaluated. You can pass up to ten arguments
(
val0
,
val1
,
val2
,
val3
,
val4
,
val5
,
val6
,
val7
,
val8
,和
val9
) to this method call.
QGenericArgument
and
QGenericReturnArgument
are internal helper classes. Because signals and slots can be
dynamically invoked, you must enclose the arguments using the
Q_ARG
() 和
Q_RETURN_ARG
() macros.
Q_ARG
() takes a type name and a const
reference of that type;
Q_RETURN_ARG
() takes a type
name and a non-const reference.
To asynchronously invoke the
animateClick()
slot on a
QPushButton
:
int methodIndex = pushButton->metaObject()->indexOfMethod("animateClick()");
QMetaMethod method = metaObject->method(methodIndex);
method.invoke(pushButton, Qt.QueuedConnection);
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
QMetaMethod.invoke: Unable to handle unregistered datatype 'MyType'
call
qRegisterMetaType
() 到
register the data type before you call QMetaMethod.invoke().
要同步援引
compute(QString, int,
double)
slot on some arbitrary object
obj
retrieve
its return value:
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));
QMetaObject.normalizedSignature
()
is used here to ensure that the format of the signature is what
invoke() expects. E.g. extra whitespace is removed.
If the "compute" slot does not take exactly one
QString
, one int and one double in the specified
order, the call will fail.
警告:
this method will not test the validity of the
arguments:
object
must be an instance of the class of the
QMetaObject
of which this
QMetaMethod
has been constructed with. The
arguments must have the same type as the ones expected by the
method, else, the behaviour is undefined.
另请参阅
Q_ARG
(),
Q_RETURN_ARG
(),
qRegisterMetaType
(),
and
QMetaObject.invokeMethod
().
object QMetaMethod.invoke (
self
,
QObject
object
,
QGenericReturnArgument
returnValue
,
QGenericArgument
value0
= QGenericArgument(0,0),
QGenericArgument
value1
= QGenericArgument(0,0),
QGenericArgument
value2
= QGenericArgument(0,0),
QGenericArgument
value3
= QGenericArgument(0,0),
QGenericArgument
value4
= QGenericArgument(0,0),
QGenericArgument
value5
= QGenericArgument(0,0),
QGenericArgument
value6
= QGenericArgument(0,0),
QGenericArgument
value7
= QGenericArgument(0,0),
QGenericArgument
value8
= QGenericArgument(0,0),
QGenericArgument
value9
= QGenericArgument(0,0))
此函数重载
invoke
().
This overload always invokes this method using the connection
type
Qt.AutoConnection
.
object QMetaMethod.invoke (
self
,
QObject
object
,
Qt.ConnectionType
connectionType
,
QGenericArgument
value0
= QGenericArgument(0,0),
QGenericArgument
value1
= QGenericArgument(0,0),
QGenericArgument
value2
= QGenericArgument(0,0),
QGenericArgument
value3
= QGenericArgument(0,0),
QGenericArgument
value4
= QGenericArgument(0,0),
QGenericArgument
value5
= QGenericArgument(0,0),
QGenericArgument
value6
= QGenericArgument(0,0),
QGenericArgument
value7
= QGenericArgument(0,0),
QGenericArgument
value8
= QGenericArgument(0,0),
QGenericArgument
value9
= QGenericArgument(0,0))
此函数重载
invoke
().
This overload can be used if the return value of the member is
of no interest.
object QMetaMethod.invoke (
self
,
QObject
object
,
QGenericArgument
value0
= QGenericArgument(0,0),
QGenericArgument
value1
= QGenericArgument(0,0),
QGenericArgument
value2
= QGenericArgument(0,0),
QGenericArgument
value3
= QGenericArgument(0,0),
QGenericArgument
value4
= QGenericArgument(0,0),
QGenericArgument
value5
= QGenericArgument(0,0),
QGenericArgument
value6
= QGenericArgument(0,0),
QGenericArgument
value7
= QGenericArgument(0,0),
QGenericArgument
value8
= QGenericArgument(0,0),
QGenericArgument
value9
= QGenericArgument(0,0))
此函数重载
invoke
().
This overload invokes this method using the connection type
Qt.AutoConnection
and
ignores return values.
int QMetaMethod.methodIndex (
self
)
Returns this method's index.
该函数在 Qt 4.6 引入。
MethodType
QMetaMethod.methodType (
self
)
Returns the type of this method (signal, slot, or method).
另请参阅
access
().
list-of-QByteArray QMetaMethod.parameterNames (
self
)
Returns a list of parameter names.
另请参阅
parameterTypes
() 和
signature
().
list-of-QByteArray QMetaMethod.parameterTypes (
self
)
Returns a list of parameter types.
另请参阅
parameterNames
() 和
signature
().
str QMetaMethod.signature (
self
)
Returns the signature of this method (e.g.,
setValue(double)
).
另请参阅
parameterTypes
() 和
parameterNames
().
str QMetaMethod.tag (
self
)
Returns the tag associated with this method.
Tags are special macros recognized by
moc
that make it
possible to add extra information about a method.
Tag information can be added in the following way in the
function declaration:
#define THISISTESTTAG // tag text
...
private slots:
THISISTESTTAG void testFunc();
and the information can be accessed by using:
MainWindow win;
win.show();
int functionIndex = win.metaObject()->indexOfSlot("testFunc()");
QMetaMethod mm = metaObject()->method(functionIndex);
qDebug() << mm.tag();
For the moment,
moc
doesn't support any special
标签。
str QMetaMethod.typeName (
self
)
Returns the return type of this method, or an empty string if
the return type is
void
.
-
首页
-
PyQt 4.11.4
-
文档编制