2013-05-06 114 views
1

我從數據庫中獲取數據並將其顯示在TableView上。在Pyqt/PySide中如何在TableView的單元格中設置不同的顏色

在一個單元格中,某些關鍵字對於用戶來說應該比較明顯,比如警告關鍵等等。

我知道如何改變整個單元格單詞的字體顏色,但是我們只需要將其中的一部分改爲紅色。

例如

WARNNING:您的試用期只有20 天離開

的話WARNNING和20號應該是顏色爲紅色換句話說應該是黑色正常。

如何? 非常感謝。

回答

2

您需要爲您的表格視圖使用model,該角色爲ForegroundRole,其中一些單元格返回紅色前景色。就像:

class MyModel(QtCore.QAbstractTableModel): 

    def data(self, index, role): 
     if index.isValid(): 
      if role == QtCore.Qt.ForegroundRole and condition_for_red_color: 
       return QtGui.QBrush(...) 
0

我認爲你需要使用委託來實現你想要的 - 標準視圖不支持這種文本格式。

委託可以以任何您想要的方式繪製單元格。它不像你想象的那麼難,但是它會要求你創建一個用兩種顏色寫文本的繪畫方法。理想情況下,您希望它支持所有常規樣式,因此將其設置爲QStyledItemDelegate的子類。以下是涵蓋一切你需要的一些很好的例子:

How to make item view render rich (html) text in Qt

不幸的是目前在PySide實施QStyledItemDelegate.initStyleOption了一個錯誤:

https://bugreports.qt-project.org/browse/PYSIDE-115

這可能會導致一些困難得到風格非常正確。但是紅色文本應該是可行的。

相關問題