QMetaObject Class Reference
[QtCore module]
该QMetaObject类包含有关Qt对象的元信息。More...
Methods
-
__init__ (self)
-
__init__ (self, QMetaObject)
-
QMetaClassInfo classInfo (self, int index)
-
int classInfoCount (self)
-
int classInfoOffset (self)
-
str className (self)
-
QMetaMethod constructor (self, int index)
-
int constructorCount (self)
-
QMetaEnum enumerator (self, int index)
-
int enumeratorCount (self)
-
int enumeratorOffset (self)
-
int indexOfClassInfo (self, str name)
-
int indexOfConstructor (self, str constructor)
-
int indexOfEnumerator (self, str name)
-
int indexOfMethod (self, str method)
-
int indexOfProperty (self, str name)
-
int indexOfSignal (self, str signal)
-
int indexOfSlot (self, str slot)
-
QMetaMethod method (self, int index)
-
int methodCount (self)
-
int methodOffset (self)
-
QObject newInstance (self, 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))
-
QMetaProperty property (self, int index)
-
int propertyCount (self)
-
int propertyOffset (self)
-
QMetaObject superClass (self)
-
QMetaProperty userProperty (self)
Static Methods
-
bool checkConnectArgs (str signal, str method)
-
connectSlotsByName (QObject o)
-
object invokeMethod (QObject obj, str member, Qt.ConnectionType type, QGenericReturnArgument ret, 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 invokeMethod (QObject obj, str member, QGenericReturnArgument ret, 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 invokeMethod (QObject obj, str member, Qt.ConnectionType type, 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 invokeMethod (QObject obj, str member, 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))
-
QByteArray normalizedSignature (str method)
-
QByteArray normalizedType (str type)
Detailed Description
该QMetaObject类包含有关Qt对象的元信息。
Qt的Meta-Object
System在Qt是负责信号和槽的对象间通信机制,运行时类型信息,而Qt的属性系统。单QMetaObject实例为每个创建QObject子类,用于在应用程序中,并且该实例存储所有的元信息的QObject子类。该对象可作为QObject.metaObject( ) 。
此类不正常所需的应用程序,但如果你写的元应用,如脚本引擎或GUI构建器是有用的。
你是最有可能找到有用的功能是这些:
该指数函数indexOfConstructor( )indexOfMethod( )indexOfEnumerator()和indexOfProperty( )构造函数,成员函数,枚举或属性索引的元对象的映射名称。举例来说, Qt使用indexOfMethod( )内部,当你连接一个信号到一个槽。
类也可以有一个列表name - value对其他的类信息,存储在QMetaClassInfo对象。对的数目是由返回classInfoCount() ,单一对被返回classInfo( ) ,您可以搜索与配对indexOfClassInfo( ) 。
Method Documentation
QMetaObject.__init__ (self)
QMetaObject.__init__ (self, QMetaObject)
bool QMetaObject.checkConnectArgs (str signal, str method)
返回True如果signal和method参数是兼容的,否则返回False 。
Both signal和method预期将被归一化。
See also normalizedSignature( ) 。
QMetaClassInfo QMetaObject.classInfo (self, int index)
用给定的返回的元数据的类别信息的项目index。
例如:
class MyClass : public QObject
{
Q_OBJECT
Q_CLASSINFO("author", "Sabrina Schweinsteiger")
Q_CLASSINFO("url", "http://doc.moosesoft.co.uk/1.0/")
public:
...
};
See also classInfoCount( )classInfoOffset()和indexOfClassInfo( ) 。
int QMetaObject.classInfoCount (self)
返回类信息的项目在这个类别的数量。
See also classInfo( )classInfoOffset()和indexOfClassInfo( ) 。
int QMetaObject.classInfoOffset (self)
返回类此信息类抵消,也就是说这个类的第一类信息项的索引位置。
如果类没有父类与类的信息,偏移量为0 ,否则偏移量是在类的所有超类的类信息项的总和。
See also classInfo( )classInfoCount()和indexOfClassInfo( ) 。
str QMetaObject.className (self)
返回类的名称。
See also superClass( ) 。
QMetaObject.connectSlotsByName (QObject o)
递归搜索对于给定的所有子对象object,并连接从它们的匹配信号的时隙object下面的格式如下:
void on_<object name>_<signal name>(<signal parameters>);
让我们假定我们的对象类型的子对象QPushButton与object name button1。赶上按钮的插槽clicked()信号将是:
void on_button1_clicked();
See also QObject.setObjectName( ) 。
QMetaMethod QMetaObject.constructor (self, int index)
返回的元数据用于构造具有给定index。
此功能被引入Qt的4.5 。
See also constructorCount()和newInstance( ) 。
int QMetaObject.constructorCount (self)
返回构造函数在这个类的数量。
此功能被引入Qt的4.5 。
See also constructor()和indexOfConstructor( ) 。
QMetaEnum QMetaObject.enumerator (self, int index)
返回的元数据枚举给定的index。
See also enumeratorCount( )enumeratorOffset()和indexOfEnumerator( ) 。
int QMetaObject.enumeratorCount (self)
返回普查员在这个类的数量。
See also enumerator( )enumeratorOffset()和indexOfEnumerator( ) 。
int QMetaObject.enumeratorOffset (self)
返回枚举这个类的偏移,即这个类的第一个枚举的索引位置。
如果类没有父类与枚举,偏移量为0 ,否则偏移在类的超类的所有统计员的总和。
See also enumerator( )enumeratorCount()和indexOfEnumerator( ) 。
int QMetaObject.indexOfClassInfo (self, str name)
查找类信息项name并返回其索引,否则返回-1 。
See also classInfo( )classInfoCount()和classInfoOffset( ) 。
int QMetaObject.indexOfConstructor (self, str constructor)
Finds constructor并返回其索引,否则返回-1 。
注意,这个constructor必须以标准化形式,如通过返回normalizedSignature( ) 。
此功能被引入Qt的4.5 。
See also constructor( )constructorCount()和normalizedSignature( ) 。
int QMetaObject.indexOfEnumerator (self, str name)
查找枚举name并返回其索引,否则返回-1 。
See also enumerator( )enumeratorCount()和enumeratorOffset( ) 。
int QMetaObject.indexOfMethod (self, str method)
Finds method并返回其索引,否则返回-1 。
注意,这个method必须以标准化形式,如通过返回normalizedSignature( ) 。
See also method( )methodCount( )methodOffset()和normalizedSignature( ) 。
int QMetaObject.indexOfProperty (self, str name)
认定财产name并返回其索引,否则返回-1 。
See also property( )propertyCount()和propertyOffset( ) 。
int QMetaObject.indexOfSignal (self, str signal)
Finds signal并返回其索引,否则返回-1 。
这是相同的indexOfMethod() ,不同之处在于它会返回-1,如果存在的方法,但不是一个信号。
注意,这个signal必须以标准化形式,如通过返回normalizedSignature( ) 。
See also indexOfMethod( )normalizedSignature( )method( )methodCount()和methodOffset( ) 。
int QMetaObject.indexOfSlot (self, str slot)
Finds slot并返回其索引,否则返回-1 。
这是相同的indexOfMethod() ,不同之处在于它会返回-1,如果存在的方法,但不是一个时隙。
See also indexOfMethod( )method( )methodCount()和methodOffset( ) 。
调用member在对象上(一个信号或一个时隙名)obj。返回True如果该成员可被调用。返回False,如果没有这样的成员或参数不匹配。
该调用可以是同步或异步的,这取决于type:
- If type is Qt.DirectConnection, the member
will be invoked immediately.
- If type is Qt.QueuedConnection, a QEvent will be sent and the member is invoked as
soon as the application enters the main event loop.
- If type is Qt.BlockingQueuedConnection, the
method will be invoked in the same way as for Qt.QueuedConnection, except that
the current thread will block until the event is delivered. Using
this connection type to communicate between objects in the same
thread will lead to deadlocks.
- If type is Qt.AutoConnection, the member is
invoked synchronously if obj lives in the same thread as the
caller; otherwise it will invoke the member asynchronously.
的返回值member函数调用被放置在ret。如果调用是异步的,则返回值无法评估。你可以通过多达十个参数(val0,val1,val2,val3,val4,val5,val6,val7,val8和val9)到member功能。
QGenericArgument和QGenericReturnArgument是内部的辅助类。由于信号和槽可以动态调用,则必须使用附上参数Q_ARG()和Q_RETURN_ARG( )宏。Q_ARG( )接受一个类型名称和类型的const引用;Q_RETURN_ARG( )接受一个类型名称和一个非const引用。
您只需要在信号或插槽的名称传递给这个函数,而不是整个签名。例如,异步调用animateClick()插槽上QPushButton,使用下面的代码:
QMetaObject.invokeMethod(pushButton, "animateClick",
Qt.QueuedConnection);
对于异步方法调用时,参数必须是已知Qt的元对象系统类型,因为Qt的需要复制到它们存储在幕后事件的参数。如果您尝试使用一个排队的连接,并收到错误消息
QMetaObject.invokeMethod: Unable to handle unregistered datatype 'MyType'
通话qRegisterMetaType()注册的数据类型调用的invokeMethod ()之前。
要同步调用compute(QString, int,
double)插槽上的一些任意对象obj检索它的返回值:
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));
如果“计算”老虎不采取只有一个QString一int和一间双人按照指定的顺序,则调用将失败。
See also Q_ARG( )Q_RETURN_ARG( )qRegisterMetaType()和QMetaMethod.invoke( ) 。
object QMetaObject.invokeMethod (QObject obj, str member, QGenericReturnArgument ret, 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))
这个函数的重载invokeMethod( ) 。
此重载始终使用连接类型调用成员Qt.AutoConnection。
object QMetaObject.invokeMethod (QObject obj, str member, Qt.ConnectionType type, 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))
这个函数的重载invokeMethod( ) 。
如果该成员的返回值是没有兴趣此重载都可以使用。
object QMetaObject.invokeMethod (QObject obj, str member, 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))
这个函数的重载invokeMethod( ) 。
使用的连接类型此重载调用成员Qt.AutoConnection并忽略返回值。
QMetaMethod QMetaObject.method (self, int index)
返回的元数据的方法,用给定的index。
See also methodCount( )methodOffset()和indexOfMethod( ) 。
int QMetaObject.methodCount (self)
返回在这个类中已知的元对象系统的方法数,包括每一个基类提供的属性的数量。这些措施包括信号和槽以及与声明的成员函数Q_INVOKABLE宏。
使用如下所示的代码来获得QStringList包含特定于给定类中的方法:
const QMetaObject* metaObject = obj->metaObject();
QStringList methods;
for(int i = metaObject->methodOffset(); i < metaObject->methodCount(); ++i)
methods << QString.fromLatin1(metaObject->method(i).signature());
See also method( )methodOffset()和indexOfMethod( ) 。
int QMetaObject.methodOffset (self)
返回方法这个类的偏移,即这个类的一个成员函数的索引位置。
偏移量是在类的超类的所有方法(之和这始终是积极的,因为QObject有deleteLater ()槽和销毁( )信号) 。
See also method( )methodCount()和indexOfMethod( ) 。
QObject QMetaObject.newInstance (self, 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))
构造此类的一个新实例。你可以通过多达十个参数(val0,val1,val2,val3,val4,val5,val6,val7,val8和val9)给构造函数。返回新对象,或者0,如果没有合适的构造函数是可用的。
请注意,只有建构与该声明Q_INVOKABLE改性剂是通过元对象系统提供。
此功能被引入Qt的4.5 。
See also Q_ARG()和constructor( ) 。
QByteArray QMetaObject.normalizedSignature (str method)
归一给定的签名method。
Qt使用归一化签名来决定两个给定信号和槽是否兼容。正常化减少空白到最低限度,移动'常量'到前面在适当情况下,删除'常量'的值类型和替换值的常量引用。
See also checkConnectArgs()和normalizedType( ) 。
QByteArray QMetaObject.normalizedType (str type)
归一type。
See QMetaObject.normalizedSignature( )上的Qt如何标准化的描述。
例如:
QByteArray normType = QMetaObject.normalizedType(" int const *");
这个函数中引入了Qt 4.2中。
See also normalizedSignature( ) 。
QMetaProperty QMetaObject.property (self, int index)
用给定的返回的元数据的属性index。如果没有这样的属性存在,空QMetaProperty返回。
See also propertyCount( )propertyOffset()和indexOfProperty( ) 。
int QMetaObject.propertyCount (self)
返回这个类的属性的数量,包括每一个基类提供的属性的数量。
使用如下所示的代码来获得QStringList包含特定于某个给定的类的属性:
const QMetaObject* metaObject = obj->metaObject();
QStringList properties;
for(int i = metaObject->propertyOffset(); i < metaObject->propertyCount(); ++i)
properties << QString.fromLatin1(metaObject->property(i).name());
See also property( )propertyOffset()和indexOfProperty( ) 。
int QMetaObject.propertyOffset (self)
返回属性为这个类的偏移,即这个类的第一个属性的索引位置。
偏移量是在类的超类的所有属性的总和(这始终是积极的,因为QObject具有()的名称属性) 。
See also property( )propertyCount()和indexOfProperty( ) 。
QMetaObject QMetaObject.superClass (self)
返回超类,或0的元对象,如果没有这样的对象。
See also className( ) 。
QMetaProperty QMetaObject.userProperty (self)
返回具有该属性的USER标志设置为True 。
这个函数中引入了Qt 4.2中。
See also QMetaProperty.isUser( ) 。