2013-05-06 353 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

这可能会导致一些困难得到风格非常正确。但是红色文本应该是可行的。

相关问题