我需要CSS访问QHeaderView的所有列设置背景图像为第一列,我可以通过:
QHeaderView::section:horizontal:first{
background-image: url(:/Icons/icon_1.png);
background-position:left;
background-repeat:no-repeat;
border: 1px solid #4B4B4B;
}
到我可以通过:
访问的最后一列QHeaderView::section:horizontal:last{
background-image: url(:/Icons/icon_5.png);
background-position:left;
background-repeat:no-repeat;
border: 1px solid #4B4B4B;
}
你知道我怎么才能得到第二第三…等列?设置背景图片或设置大图标为QHeaderView
所有我想要的是设置大图标QHeaderView,但与css我可以访问只是第一个和最后一个项目,我找到了一个解决方案,通过QProxyStyle类改变QHeaderView项目图标的大小,我将分享我的解决方案在这里:
所有你需要做的就是继承QProxyStyle类到你自己的类覆盖drawControl方法和setStyle到你的TreeView
HeaderStyle* style= new HeaderStyle();
treeVew->header()->setStyle(style);
可以用
Model->horizontalHeaderItem(0)->setIcon(QIcon(":/Icons/icon_1.png"));
设置你的图标
class HeaderStyle : public QProxyStyle
{
public:
void drawControl(ControlElement element,const QStyleOption * option, QPainter * painter, const QWidget * widget = 0) const
{
if (element == CE_HeaderLabel) {
QStyleOptionHeader *op = (QStyleOptionHeader *) option;
QIcon icon = qvariant_cast<QIcon>(op->icon);
QSize iconsize(120,120);
QRect iconRect = op->rect;
QPixmap pixmap = icon.pixmap(iconsize.width(),iconsize.height());
painter->drawPixmap(QPoint(iconRect.left() + 5, iconRect.top()+ 5), pixmap);
return;
}
QProxyStyle::drawControl(element, option, painter, widget);
}
};
我在我的应用程序中通过简单地使用:
QHeaderView::section {
/* MY CSS STUFF HERE */
}
所有的样式