ZBLOG

class CustomTabStyle : public QProxyStyle { public: QSize sizeFromContents(ContentsType type, const QStyleOption *option, const QSize &size, const QWidget *widget) const { QSize s = QProxyStyle::sizeFromContents(type, optio...

要去掉表头边框,您可以在drawControl()函数中针对CE_TabBarTabLabel元素的绘制部分进行修改。具体地,在绘制选中状态和悬停状态的代码块中,将画矩形或圆角矩形的部分注释掉即可。

下面是修改后的代码示例:

void drawControl(ControlElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget) const
{
    if (element == CE_TabBarTabLabel) {
        painter->setPen(QColor(255,255,255)); // 设置为红色边框
        if (const QStyleOptionTab *tab = qstyleoption_cast<const QStyleOptionTab *>(option)) {
            QRect allRect = tab->rect;
            allRect.setWidth(allRect.width());
            allRect.setHeight(allRect.height());
            allRect.adjust(0, 0, 0, 0);
            // 选中状态
            if (tab->state & QStyle::State_Selected) {
                painter->save();
                painter->setBrush(QBrush(0xffffff));
                // 注释掉原来的矩形或圆角矩形绘制代码
                painter->restore();
            }
            // 悬停状态
            else if(tab->state & QStyle::State_MouseOver){
                painter->save();
                allRect.adjust(0, 0, 0, 0);
                // 注释掉原来的矩形或圆角矩形绘制代码
                painter->restore();
            }
            
            QTextOption textOption;
            textOption.setAlignment(Qt::AlignCenter);
            painter->setPen(QColor(0,0,0));
            painter->drawText(allRect, tab->text, textOption);
            
            return;
        }
    }
    
    if (element == CE_TabBarTab) {
        QProxyStyle::drawControl(element, option, painter, widget);
    }
}

通过注释掉矩形或圆角矩形绘制代码,即可去掉表头边框。请根据您的具体需求进行相应的修改。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=17378

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?