本实例使用一个简单的例子说明如何在程序开发中使用Designer生成.ui文件。本实例利用Qt Designer生成了3个简单的ui,在使用时,两个ui插入到主程序的QTabWidget中,另一个ui由按钮触发弹出,如下图所示。主程序窗口TestDialog采用的是手动编写代码的实现方式。
利用Qt Designer设计生成的.ui文件,在使用时可利用Qt自带的工具pyuic4生成ui_xxx.py文件进行使用。
下图是本实例使用Qt Designer设计的3个ui文件。
然后使用pyuic4对这三个ui文件进行转换,如下图所示。
下面是本实例的代码实现。
- from PyQt4.QtGui import *
- from PyQt4.QtCore import *
- import ui_10_1,ui_10_2,ui_10_3
- import sys
- class TestDialog(QDialog):
- def __init__(self,parent=None):
- super(TestDialog,self).__init__(parent)
- firstUi=ui_10_1.Ui_Dialog()
- secondUi=ui_10_2.Ui_Dialog()
- self.thirdUi=ui_10_3.Ui_Dialog()
- tabWidget=QTabWidget(self)
- w1=QWidget()
- firstUi.setupUi(w1)
- w2=QWidget()
- secondUi.setupUi(w2)
- tabWidget.addTab(w1,"First")
- tabWidget.addTab(w2,"Second")
- tabWidget.resize(380,380)
- self.connect(firstUi.childPushButton,SIGNAL("clicked()"),self.slotChild)
- self.connect(secondUi.closePushButton,SIGNAL("clicked()"),self,SLOT("reject()"))
- def slotChild(self):
- dlg=QDialog()
- self.thirdUi.setupUi(dlg)
- dlg.exec_()
- app=QApplication(sys.argv)
- dialog=TestDialog()
- dialog.show()
- app.exec_()
import ui_10_1,ui_10_2,ui_10_3 这三个文件是通过pyuic4工具根据相应的ui文件生成的。
slotChild()槽函数用于响应弹出子窗口的按钮事件。
主程序中声明了3个变量,firstUi,secondUi,thirdUi分别对应3个ui。
第14行首先创建一个QTabWidget对象。
第15,16行创建第一个ui,首先新建一个QWidget对象,以此QWidget对象为参数调用第一个ui的setupUi()函数,生成第一个ui页面。
第17,18行以同样的方式创建第二个ui画面。
第20-22行在QTabWidget对象中插入两个准备好的ui页面。
第24行连接第一个ui页面上的childPushButton的clicked()信号与slotChild()槽函数。
第25行连接第二个ui页面上closePushButton的clicked()信号与reject()槽函数,关闭主窗口程序。
实现弹出对话框的槽函数slotChild()中,首先新建一个QDialog对象,以此QDialog对象为参数调用第三个ui对象的setupUi()函数,最后调用exec()显示此对话框。
注:本文基本上是经过改编的《Linux窗口程序设计--Qt4精彩实例分析》一书的PyQt4 for windows版本