CSS访问QHeaderView项目列设置背景图像,或设置大图标到QHeaderView



我需要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 */
}

所有的样式

相关内容

  • 没有找到相关文章

最新更新