我正在创建一个自定义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已经被调整为足够大以适合按钮图像和文本。
答案 0 :(得分:0)
看起来像QToolButton
的作业以及setToolButtonStyle(Qt::ToolButtonTextUnderIcon)
。