我从数据库中获取数据并将其显示在TableView上。在Pyqt/PySide中如何在TableView的单元格中设置不同的颜色
在一个单元格中,某些关键字对于用户来说应该比较明显,比如警告关键等等。
我知道如何改变整个单元格单词的字体颜色,但是我们只需要将其中的一部分改为红色。
例如
WARNNING:您的试用期只有20 天离开
的话WARNNING和20号应该是颜色为红色换句话说应该是黑色正常。
如何? 非常感谢。
我从数据库中获取数据并将其显示在TableView上。在Pyqt/PySide中如何在TableView的单元格中设置不同的颜色
在一个单元格中,某些关键字对于用户来说应该比较明显,比如警告关键等等。
我知道如何改变整个单元格单词的字体颜色,但是我们只需要将其中的一部分改为红色。
例如
WARNNING:您的试用期只有20 天离开
的话WARNNING和20号应该是颜色为红色换句话说应该是黑色正常。
如何? 非常感谢。
您需要为您的表格视图使用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(...)
我认为你需要使用委托来实现你想要的 - 标准视图不支持这种文本格式。
委托可以以任何您想要的方式绘制单元格。它不像你想象的那么难,但是它会要求你创建一个用两种颜色写文本的绘画方法。理想情况下,您希望它支持所有常规样式,因此将其设置为QStyledItemDelegate的子类。以下是涵盖一切你需要的一些很好的例子:
How to make item view render rich (html) text in Qt
不幸的是目前在PySide实施QStyledItemDelegate.initStyleOption
了一个错误:
https://bugreports.qt-project.org/browse/PYSIDE-115
这可能会导致一些困难得到风格非常正确。但是红色文本应该是可行的。