Home · All Classes · Modules  · QSS HELP  · QSS 案例 · VER007 HOME

QMetaObject Class Reference
[QtCore module]

该QMetaObject类包含有关Qt对象的元信息。More...

Methods

Static Methods


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如果signalmethod参数是兼容的,否则返回False 。

Both signalmethod预期将被归一化。

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>);

让我们假定我们的对象类型的子对象QPushButtonobject 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( ) 。

object QMetaObject.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))

调用member在对象上(一个信号或一个时隙名)obj。返回True如果该成员可被调用。返回False,如果没有这样的成员或参数不匹配。

该调用可以是同步或异步的,这取决于type

的返回值member函数调用被放置在ret。如果调用是异步的,则返回值无法评估。你可以通过多达十个参数(val0val1val2val3val4val5val6val7val8val9)到member功能。

QGenericArgumentQGenericReturnArgument是内部的辅助类。由于信号和槽可以动态调用,则必须使用附上参数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))

构造此类的一个新实例。你可以通过多达十个参数(val0val1val2val3val4val5val6val7val8val9)给构造函数。返回新对象,或者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  *");
 // normType is now "const int*"

这个函数中引入了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( ) 。




PyQt 4.10.3 for X11 Copyright © Riverbank Computing Ltd and Nokia 2012 Qt 4.8.5