在按钮上绘制QPushButton文本



我正在创建一个自定义的QPushButton。如果按钮有一个图标,我希望图标在按钮的中心。如果按钮有文本,我希望文本位于按钮的中心。这两种情况我都能处理。如果按钮既包含图标又包含文本,我希望图标居中,文本绘制在按钮下方,位于按钮矩形之外。我在样式表中使用border-image绘制按钮图像。

在MyPushButton::paintEvent()中,我计算了一个矩形,并使用:

绘制图标
    style()->drawItemPixmap(&p, iconRect, Qt::AlignLeft | Qt::AlignVCenter, 
        this->icon().pixmap(iconRect.size()));

然后在按钮下方计算一个文本矩形,并这样做:

    style()->drawItemText(&p, textRect, Qt::AlignCenter, (this->palette()),
        true, this->text(), QPalette::ButtonText );

但是文本不可见

我认为这必须与指定的"可绘制"区域有关,但我不知道如何扩展该区域,以便按钮图像不会填充我想放置文本的区域。

我可以做到这一点与QStyle::drawControl()过载,但我不知道为什么。当我将代码跟踪到CE_PushButtonLabel案例时,myStyle->rect已经被调整为足够大以适合按钮图像和文本。

看起来像QToolButtonsetToolButtonStyle(Qt::ToolButtonTextUnderIcon)的工作

相关内容

  • 没有找到相关文章

最新更新