CSS访问QHeaderView项列以设置背景图像,或将大图标设置为QHeaderView

CSS访问QHeaderView项列以设置背景图像,或将大图标设置为QHeaderView,css,qt,qt5,qheaderview,Css,Qt,Qt5,Qheaderview,我需要CSS访问QHeaderView的所有列 要将backround image设置为我可以通过以下方式访问的第一列: QHeaderView::section:horizontal:first{ background-image: url(:/Icons/icon_1.png); background-position:left; background-repeat:no-repeat; border: 1px solid #4B4B4B; } QHead

我需要CSS访问QHeaderView的所有列 要将backround image设置为我可以通过以下方式访问的第一列:

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::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;
}

你知道我怎么才能得到第二个第三个。。。etc专栏?要设置背景图像或将大图标设置为QHeaderView

我只需使用以下命令即可在我的应用程序中执行此操作:

QHeaderView::section {
    /* MY CSS STUFF HERE */
}

这些样式所有这些

我只想将大图标设置为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);
    }

};
班长风格:公共QProxyStyle
{
公众:
void drawControl(ControlElement元素,常量QStyleOption*选项,qPaint*画师,常量QWidget*小部件=0)常量
{
if(元素==CE_标题标签){
QStyleOptionHeader*op=(QStyleOptionHeader*)选项;
QIcon图标=qvariant_cast(操作->图标);
QSIconsize(120120);
QRect iconRect=op->rect;
QPixmap=icon.pixmap(iconsize.width(),iconsize.height());
painter->drawPixmap(QPoint(iconRect.left()+5,iconRect.top()+5),pixmap);
返回;
}
QProxyStyle::drawControl(元素、选项、画师、小部件);
}
};

我不需要为所有这些设置样式,我需要为每一列设置特定的背景图像,这是本文的重点……哦,好的,我应该提到,我会看一看