【问题标题】:Drawing QPushButton text off the button从按钮上绘制 QPushButton 文本
【发布时间】:2013-05-27 11:15:10
【问题描述】:

我正在创建一个自定义 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 已经调整大小以适合按钮图像和文本。

【问题讨论】:

  • 您是否尝试过使用QToolButton
  • 我查看了 QToolButton,但我不希望文本仅出现在图标下方。我希望它出现在“明显”按钮图像下方。想象一下在 Designer 中放置一个 QPushButton。通过属性列表添加“图标”属性。然后在按钮的边界下放置一个 QLabel。但是 QLabel 的内容将反映按钮的“文本”属性。我可能可以这样做,但肯定有一种方法可以绘制按钮背景,然后更改按钮的范围,以便我可以在指定位置添加文本?​​

标签: qt qtstylesheets qpushbutton qstyle


【解决方案1】:

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

【讨论】:

  • 我想要按钮下的文字。我希望在按钮上显示图标,并在下面绘制 this->text() 返回的字符串,给人的印象是它是一个 QLabel。客户想要一个通过 QtDesigner 以这种方式工作的自定义按钮。当他们输入“文本”属性时,该字符串出现在按钮下方,而“图标”出现在按钮的中心。
猜你喜欢
  • 2012-05-12
  • 1970-01-01
  • 2020-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-14
  • 1970-01-01
  • 2010-12-26
相关资源
最近更新 更多