本实例使用一个简单的例子说明如何在程序开发中使用Designer生成.ui文件。本实例利用Qt Designer生成了3个简单的ui,在使用时,两个ui插入到主程序的QTabWidget中,另一个ui由按钮触发弹出,如下图所示。主程序窗口TestDialog采用的是手动编写代码的实现方式。
利用Qt Designer设计生成的.ui文件,在使用时可利用Qt自带的工具pyuic4生成ui_xxx.py文件进行使用。
下图是本实例使用Qt Designer设计的3个ui文件。
然后使用pyuic4对这三个ui文件进行转换,如下图所示。
下面是本实例的代码实现。
fromPyQt4.QtGuiimport*
fromPyQt4.QtCoreimport*
importui_10_1,ui_10_2,ui_10_3
importsys
classTestDialog(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()"))
defslotChild(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()显示此对话框。