2016-09-13 11 views
1

私はpythonを中心としたpybtを中心とした初心者です。問題はシンプルです:私はQTableViewを持っていて、いくつかの行の色を「単純に」変えたいと思っています。すべてのレディング周辺私は、最も簡単な解決策は、このような方法で、モデル内のデータメソッドをオーバーライドしなければならないことが見つかりました:私はこのモデルの再実装を使用すると、行が色を変えているが、セルの値が消えて、PyQt - QSqlTableModelのデータメソッドを再実装する際の問題

class MyModel(QtSql.QSqlTableModel): 

    def data(self,idx,role): 
     testindex=self.index(idx.row(),idx.column(),idx.parent()) 
     if(role==QtCore.Qt.BackgroundRole): 
      return QtGui.QColor(255,0,0) 
     elif role == QtCore.Qt.DisplayRole: 
      return QtSql.QSqlTableModel().data(testindex) 

return文QtSql.QSqlTableModel().data(testindex)は常にNoneです。 私は解決策を見つけるのに狂っている。私たちを手伝ってくれますか?

答えて

1

実装は、(1)指定されていないロールに対して常にNoneを返します。(2)表示ロールが要求されるたびにQSqlTableModelという新しいインスタンスを作成します。クラスメソッド。

実装は、おそらくこのようなものでなければなりません:

class MyModel(QtSql.QSqlTableModel): 

    def data(self, index, role): 
     if role == QtCore.Qt.BackgroundRole: 
      return QtGui.QColor(255, 0, 0) 
     return super(MyModel, self).data(index, role) 
+0

今では働いている!!! @ekhumoroありがとうございました! – paky79

関連する問題