[转]*PyQt4 精彩实例分析* 实例10 …

来源:互联网 发布:淘宝化妆品销量排行榜 编辑:程序博客网 时间:2024/05/03 13:58
原文:http://blog.csdn.net/chumpklutz/article/details/6061077

本实例使用一个简单的例子说明如何在程序开发中使用Designer生成.ui文件。本实例利用QtDesigner生成了3个简单的ui,在使用时,两个ui插入到主程序的QTabWidget中,另一个ui由按钮触发弹出,如下图所示。主程序窗口TestDialog采用的是手动编写代码的实现方式。

                       

利用QtDesigner设计生成的.ui文件,在使用时可利用Qt自带的工具pyuic4生成ui_xxx.py文件进行使用。

下图是本实例使用Qt Designer设计的3个ui文件。

然后使用pyuic4对这三个ui文件进行转换,如下图所示。

下面是本实例的代码实现。

[python] viewplaincopy
  1. from PyQt4.QtGui import  
  2. from PyQt4.QtCore import  
  3. import ui_10_1,ui_10_2,ui_10_3  
  4. import sys  
  5.   
  6. class TestDialog(QDialog):  
  7.     def __init__(self,parent=None):  
  8.         super(TestDialog,self).__init__(parent)  
  9.           
  10.         firstUi=ui_10_1.Ui_Dialog()  
  11.         secondUi=ui_10_2.Ui_Dialog()  
  12.         self.thirdUi=ui_10_3.Ui_Dialog()  
  13.           
  14.         tabWidget=QTabWidget(self 
  15.         w1=QWidget()  
  16.         firstUi.setupUi(w1)  
  17.         w2=QWidget()  
  18.         secondUi.setupUi(w2)  
  19.   
  20.         tabWidget.addTab(w1,"First" 
  21.         tabWidget.addTab(w2,"Second" 
  22.         tabWidget.resize(380,380 
  23.   
  24.         self.connect(firstUi.childPushButton,SIGNAL("clicked()"),self.slotChild)  
  25.         self.connect(secondUi.closePushButton,SIGNAL("clicked()"),self,SLOT("reject()"))  
  26.         
  27.     def slotChild(self):  
  28.         dlg=QDialog()  
  29.         self.thirdUi.setupUi(dlg)  
  30.         dlg.exec_()  
  31.           
  32. app=QApplication(sys.argv)  
  33. dialog=TestDialog()  
  34. dialog.show()  
  35. 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()显示此对话框。