天天看點

PyQT——QTableView的使用

源代碼如下所示:

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'untitled2.ui'
#
# Created: Sat Oct 11 16:07:29 2014
#      by: PyQt4 UI code generator 4.11.1
#
# WARNING! All changes made in this file will be lost!

from PyQt4 import QtCore, QtGui

try:
    _fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
    def _fromUtf8(s):
        return s

try:
    _encoding = QtGui.QApplication.UnicodeUTF8
    def _translate(context, text, disambig):
        return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
    def _translate(context, text, disambig):
        return QtGui.QApplication.translate(context, text, disambig)

class Ui_Form(QtGui.QDialog):
    def setupUi(self, Form):
        Form.setObjectName(_fromUtf8("Form"))
        Form.resize(800, 600)
        self.tableView = QtGui.QTableView(Form)
        self.tableView.setGeometry(QtCore.QRect(5, 30, 790, 560))
        self.tableView.setObjectName(_fromUtf8("tableView"))
        self.label = QtGui.QLabel(Form)
        self.label.setGeometry(QtCore.QRect(10, 10, 300, 12))
        self.label.setObjectName(_fromUtf8("label"))

        self.retranslateUi(Form)
        QtCore.QMetaObject.connectSlotsByName(Form)

    def retranslateUi(self, Form):
        Form.setWindowTitle(_translate("Form", "定值設定", None))
        self.label.setText(_translate("Form", "請在下面的表格中設定定值參數:", None))

        #初始化表格
        self.tableView_set()
    
    def tableView_set(self):
        
        #添加表頭:
        self.model = QtGui.QStandardItemModel(self.tableView)

        #設定表格屬性:
        self.model.setRowCount(17)  
        self.model.setColumnCount(8) 
        
        #設定表頭
        self.model.setHeaderData(0,QtCore.Qt.Horizontal,_fromUtf8(u"類型"))
        self.model.setHeaderData(1,QtCore.Qt.Horizontal,_fromUtf8(u"值"))
        self.model.setHeaderData(2,QtCore.Qt.Horizontal,_fromUtf8(u""))
        self.model.setHeaderData(3,QtCore.Qt.Horizontal,_fromUtf8(u"類型"))
        self.model.setHeaderData(4,QtCore.Qt.Horizontal,_fromUtf8(u"值"))
        self.model.setHeaderData(5,QtCore.Qt.Horizontal,_fromUtf8(u""))
        self.model.setHeaderData(6,QtCore.Qt.Horizontal,_fromUtf8(u"類型"))
        self.model.setHeaderData(7,QtCore.Qt.Horizontal,_fromUtf8(u"值"))
        
        self.tableView.setModel(self.model)
         

        #設定列寬
        self.tableView.setColumnWidth(0,100)
        self.tableView.setColumnWidth(1,80)
        self.tableView.setColumnWidth(2,80)
        self.tableView.setColumnWidth(3,100)
        self.tableView.setColumnWidth(4,80)
        self.tableView.setColumnWidth(5,80)
        self.tableView.setColumnWidth(6,100)
        self.tableView.setColumnWidth(7,80)
        
        #合并單元格的效果
        #第一個參數:要改變的單元格行數
        #第二個參數:要改變的單元格列數
        #第三個參數:需要合并的行數
        #第四個參數:需要合并的列數
        self.tableView.setSpan(0, 2, 17, 1)
        self.tableView.setSpan(0, 5, 17, 1)
        
        #設定單元格禁止更改
        #self.tableView.setEditTriggers(QtGui.QAbstractItemView.NoEditTriggers)
        
        #表頭資訊顯示居左
        #self.tableView.horizontalHeader().setDefaultAlignment(QtCore.Qt.AlignLeft)
        
        #表頭資訊顯示居中
        self.tableView.horizontalHeader().setDefaultAlignment(QtCore.Qt.AlignCenter)

        '''
        #添加表項
        for i in range(0,3):
            self.model.setItem(i,0,QtGui.QStandardItem("2009441676"))
            #設定字元顔色
            self.model.item(i,0).setForeground(QtGui.QBrush(QtGui.QColor(255, 0, 0)))
            #設定字元位置
            self.model.item(i,0).setTextAlignment(QtCore.Qt.AlignCenter)
            
            self.model.setItem(i,1,QtGui.QStandardItem(_fromUtf8("哈哈")))
        '''
        #添加表項
        set_value_type_list = [u'過流I段定值',u'過流II段定值',u'過流III段定值',u'零序過流定值',u'後加速定值',u'PT有壓定值',u'PT過壓定值',u'PT無壓定值',u'過流I段延時',u'過流II段延時',u'過流III段延時',u'零序過流延時',u'後加速延時',u'重合閘I段延時',u'重合閘II段延時',u'重合閘III段延時',u'重合複歸延時',u'反時限曲線',u'反時限啟動',u'反時限倍數',u'環境溫度',u'控制字',u'手機号碼']
        index = 0
        for i in range(0,30):
            self.model.setItem(i,0,QtGui.QStandardItem(_fromUtf8(set_value_type_list[index])))
            index += 1
            #設定字元顔色
            self.model.item(i,0).setForeground(QtGui.QBrush(QtGui.QColor(255, 0, 0)))
            #設定字元位置
            self.model.item(i,0).setTextAlignment(QtCore.Qt.AlignCenter)
            if index >= len(set_value_type_list):
                break
            
            self.model.setItem(i,3,QtGui.QStandardItem(_fromUtf8(set_value_type_list[index])))
            index += 1
            #設定字元顔色
            self.model.item(i,3).setForeground(QtGui.QBrush(QtGui.QColor(255, 0, 0)))
            #設定字元位置
            self.model.item(i,3).setTextAlignment(QtCore.Qt.AlignCenter)
            if index >= len(set_value_type_list):
                break
                
            self.model.setItem(i,6,QtGui.QStandardItem(_fromUtf8(set_value_type_list[index])))
            index += 1
            #設定字元顔色
            self.model.item(i,6).setForeground(QtGui.QBrush(QtGui.QColor(255, 0, 0)))
            #設定字元位置
            self.model.item(i,6).setTextAlignment(QtCore.Qt.AlignCenter)
            if index >= len(set_value_type_list):
                break
            
            
        self.tableView.setModel(self.model)

if __name__ == "__main__":
    import sys
    app = QtGui.QApplication(sys.argv)
    Form = QtGui.QWidget()
    ui = Ui_Form()
    ui.setupUi(Form)
    Form.show()
    sys.exit(app.exec_())