制作统计软件时经常会使用表格将资料列出,或是通过表格进行资料的设置,在Qt中可以使用QTableWidget实现一个表格。本实例演示如何使用表格,并在表格中嵌入控件。如下图所示为“表格的使用”对话框。
QTableWidget类提供了一个灵活的和可编辑的表格控件,包含很多API,可以处理标题,行列,单元格和选中区域,QTableWidget可以嵌入编辑框或显示控件,并可通过拖动控制柄调节各单元格的大小。表格的每一项可以定义成不同的属性,可以显示文本,也可以插入控件,这样给表格的使用带来了很好的扩展性。
本实例的实现代码如下:
- # -*- coding: utf-8 -*-
- from PyQt4.QtGui import *
- from PyQt4.QtCore import *
- import sys
- QTextCodec.setCodecForTr(QTextCodec.codecForName("utf8"))
- class MyTable(QTableWidget):
- def __init__(self,parent=None):
- super(MyTable,self).__init__(parent)
- self.setColumnCount(5)
- self.setRowCount(2)
- self.setItem(0,0,QTableWidgetItem(self.tr("性别")))
- self.setItem(0,1,QTableWidgetItem(self.tr("姓名")))
- self.setItem(0,2,QTableWidgetItem(self.tr("出生日期")))
- self.setItem(0,3,QTableWidgetItem(self.tr("职业")))
- self.setItem(0,4,QTableWidgetItem(self.tr("收入")))
- lbp1=QLabel()
- lbp1.setPixmap(QPixmap("image/4.gif"))
- self.setCellWidget(1,0,lbp1)
- twi1=QTableWidgetItem("Tom")
- self.setItem(1,1,twi1)
- dte1=QDateTimeEdit()
- dte1.setDateTime(QDateTime.currentDateTime())
- dte1.setDisplayFormat("yyyy/mm/dd")
- dte1.setCalendarPopup(True)
- self.setCellWidget(1,2,dte1)
- cbw=QComboBox()
- cbw.addItem("Worker")
- cbw.addItem("Famer")
- cbw.addItem("Doctor")
- cbw.addItem("Lawyer")
- cbw.addItem("Soldier")
- self.setCellWidget(1,3,cbw)
- sb1=QSpinBox()
- sb1.setRange(1000,10000)
- self.setCellWidget(1,4,sb1)
- app=QApplication(sys.argv)
- myqq=MyTable()
- myqq.setWindowTitle("My Table")
- myqq.show()
- app.exec_()
第18-20行在表格中插入一个QLabel控件,并设置QLabel的图形属性。
第21-22行设置表格单元的属性为文本显示。
第23-27行在表格中插入一个QDateTimeEdit控件,该控件可以编辑日期时间,setCalendarPopup()方法设置是否弹出日历编辑器。
第28-34行在表格中插入一个QComboBox控件,调用QTableWidget的setCellWidget()函数可在某个指定的表格单元格中插入一个控件,函数的前两个参数用于指定单元格的行,列号。
第35-37行在表格中插入一个QSpinBox控件。