Qt提供了一个uic模块,包括了与ui相关的函数,如loadUi(),可使程序在运行中动态加载Designer设计生成的.ui文件,本实例即利用uic.loadUi()实现实例10中的弹出窗口部分。
实现动态加载ui,首先需要在程序中导入uic。
from PyQt4 import uic
然后修改slotChild()槽函数的实现代码如下:
- def slotChild(self):
- dlg=uic.loadUi("10_3.ui")
- dlg.exec_()
第一行调用uic的loadUi()函数根据ui文件生成一个相应的QDialog对象,并将此对象返回。
调用dlg.exec_()显示此子窗口。
这种动态加载的方式不用生成ui_10_3.py文件,在程序运行时才会被加载。采用这种方式最大的好处是可以在不重新生成ui_xxx.py文件的情况下,改变窗口的布局。但也存在不方便的地方,即在主程序中对子窗口的控件进行操作比较复杂。
注:本文基本上是经过改编的《Linux窗口程序设计--Qt4精彩实例分析》一书的PyQt4 for windows版本