博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

hiero.ui获取实例名的方法

Posted on 2017-05-05 14:26  SolHe  阅读(262)  评论(0编辑  收藏  举报

在hiero.ui中经常会通过hiero.ui.windowManager().windows()来获取当前QMainWindow中的QWidget子窗口,而这些子窗口是以实例对象的方式返回的,如果想具体调用某一个实例对象,就需要知道具体的类名及实例名,以防使用错误。

下面给出一段代码来获取类名及实例名:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import hiero.ui
from PySide import QtGui, QtCore

# get application name.
print QtGui.QApplication.instance().applicationName()

for i in QtGui.QApplication.instance().children():
    # get class name.
    print i.metaObject().className()
    # get instance name.
    print i.objectName()

for i in hiero.ui.windowManager().windows():
    # get exsiting windows class name.
    print 'className  ', i.metaObject().className()
    # get exsiting windows name.
    print 'objectName ', i.objectName()

 

实际上,QObject多重继承了QMetaObject等对象。QObject中存在metaObject()这样一个方法来获取QMetaObject实例对象,该对象中便记录了QObject对象的一些基本元属性。QMetaObject::className()便可获取继承了QObject实例对象的类名。

通过QObject::objectName()又可以获取实例对象名称。

 

QtGui.QApplication.instance().applicationName()获取的则是当前运行的QApplication实例名称。

 

最近为了写一个数据传输应用,认真看了Qt的文档和源码,初窥了Qt的底层设计机制;又详细看了关于OSI参考模型的设计思路,对网络传输的各方面细节也有了大致的认识,基础知识很重要,补足了这类知识后,应用也会写的很扎实。