3

我需要对 QHeaderView 的所有列进行 CSS 访问,以将背景图像设置为我可以通过以下方式访问的第一列:

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

4

2 回答 2

1

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

};
于 2015-06-15T12:17:27.833 回答
-1

我只需使用以下方法在我的应用程序中执行此操作:

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

这风格都

于 2015-06-04T14:24:54.793 回答