2011-08-12 3 views
2

右側のqtableビューのコンテンツを整列するにはどうすればよいですか?私はこのクラスを使ってテーブルを作る。pyqt4の右側のqtableview行を整列する方法は?

class MyTableModel(QAbstractTableModel): 

    def __init__(self, datain, headerdata, parent=None, *args): 
     """ datain: a list of lists 
      headerdata: a list of strings 
     """ 
     QAbstractTableModel.__init__(self, parent, *args) 
     self.arraydata = datain 
     self.headerdata = headerdata 


    def rowCount(self, parent): 
     return len(self.arraydata) 

    def columnCount(self, parent): 
     try: 
      return len(self.arraydata[0]) 
     except: 
      return 0 
    def data(self, index, role): 
     if not index.isValid(): 
      return QVariant() 
     elif role != Qt.DisplayRole: 
      return QVariant() 
     return QVariant(self.arraydata[index.row()][index.column()]) 

    def headerData(self, col, orientation, role): 

     if orientation == Qt.Horizontal and role == Qt.DisplayRole: 
       return QVariant(self.headerdata[col]) 
     return QVariant() 

    def sort(self, Ncol, order): 
     """Sort table by given column number. 
     """ 
     self.emit(SIGNAL("layoutAboutToBeChanged()")) 
     self.arraydata = sorted(self.arraydata, key=operator.itemgetter(Ncol))   
     if order == Qt.DescendingOrder: 
      self.arraydata.reverse() 
     self.emit(SIGNAL("layoutChanged()")) 

すべての通貨データタイプを右側に揃えたいとします。 ありがとう:)

答えて

4

Qt::ItemDataRole enum(特にTextAlignmentRole)をご覧ください。

def data(self, index, role): 
    if index.isValid(): 
     return QVariant() 

    if role == Qt.DisplayRole: 
     return QVariant(self.arraydata[index.row()][index.column()]) 
    elif role == Qt.TextAlignmentRole: 
     return QVariant(Qt.AlignRight | Qt.AlignVCenter) 

    return QVariant() 

あなたはこのような何かを行うことができます

関連する問題