Qtreewidgetitem 中的 Qtreewidgetitem 项目将颜色更改为 Icon
Qtreewidget item change color to Icon in Qtreewidgetitem
如何动态更改 qtreewidgetitem 中的背景图标:
一些代码示例..
if item.text(0)=="INL"
item.icon(0).setBackground(Qt.green)
else:
item.icon(0).setBackground(Qt.yellow)
我只想要图标背景而不是所有项目(图标+文本)..
使用delegate item and override the paint方法。
例子
h 文件
class MyItemDelegate : public QItemDelegate
{
public:
MyItemDelegate(QObject *parent = Q_NULLPTR);
void paint ( QPainter * painter, const QStyleOptionViewItem & oStyleOption, const QModelIndex & index ) const;
}
cpp
void MyItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &oStyleOption, const QModelIndex &index) const
{
// Apply for column 0
if (index.column() == 0) {
// background color
Qt::GlobalColor eColor;
// Get table data
if (index.model()->data(index).toString() == "INL")
eColor = Qt::green;
else
eColor = Qt::yellow;
painter->save();
// background rect size (icon size 16x16 + padding)
QRect oRect(oStyleOption.rect.x() + 2, oStyleOption.rect.y() + 6 , 16, 16);
// background color
painter->fillRect(oRect, eColor);
painter->restore();
}
return QItemDelegate::paint(painter,oStyleOption,index);
}
将项目设置为您的 table 使用 setItemDelegateForColumn
如何动态更改 qtreewidgetitem 中的背景图标: 一些代码示例..
if item.text(0)=="INL"
item.icon(0).setBackground(Qt.green)
else:
item.icon(0).setBackground(Qt.yellow)
我只想要图标背景而不是所有项目(图标+文本)..
使用delegate item and override the paint方法。
例子
h 文件
class MyItemDelegate : public QItemDelegate
{
public:
MyItemDelegate(QObject *parent = Q_NULLPTR);
void paint ( QPainter * painter, const QStyleOptionViewItem & oStyleOption, const QModelIndex & index ) const;
}
cpp
void MyItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &oStyleOption, const QModelIndex &index) const
{
// Apply for column 0
if (index.column() == 0) {
// background color
Qt::GlobalColor eColor;
// Get table data
if (index.model()->data(index).toString() == "INL")
eColor = Qt::green;
else
eColor = Qt::yellow;
painter->save();
// background rect size (icon size 16x16 + padding)
QRect oRect(oStyleOption.rect.x() + 2, oStyleOption.rect.y() + 6 , 16, 16);
// background color
painter->fillRect(oRect, eColor);
painter->restore();
}
return QItemDelegate::paint(painter,oStyleOption,index);
}
将项目设置为您的 table 使用 setItemDelegateForColumn