0

我正在创建一个自定义 QPushButton。如果按钮有一个图标,我希望图标位于按钮的中心。如果按钮有文本,我希望文本以按钮为中心。我可以处理这两种情况。如果按钮同时包含图标和文本,我希望图标居中,文本在按钮下方绘制,在按钮矩形之外。我正在使用样式表中的边框图像绘制按钮图像。

在 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 已经调整大小以适应按钮图像和文本。

4

1 回答 1

0

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

于 2013-06-01T14:43:49.033 回答