我有自己的小部件 MyToolButton,它继承自QToolButton
. 在 paintEvent 中,我只想从 original 中绘制“背景” QToolButton
。我的意思是,我只需要绘制样式(单击、悬停等),但没有文本和图像。我想自己绘制这些东西(使用自定义格式等)。当我打电话时QToolButton::paintEvent(ev)
,一切都画好了。如何从绘画中排除图像和文字?我想我应该使用drawControl()
,drawPrimitive()
但drawComplexControl()
无法理解所有这些状态
问问题
1697 次
1 回答
2
源代码void QToolButton::paintEvent(QPaintEvent *)
为:
QStylePainter p(this);
QStyleOptionToolButton opt;
initStyleOption(&opt);
p.drawComplexControl(QStyle::CC_ToolButton, opt);
QStylePainter::drawComplexControl
calls QStyle::drawComplexControl
,这是一个纯虚函数,它的实现取决于你正在使用的风格。您需要找到具体实现的源代码(如QWindowsXPStyle
or QGtkStyle
),找到drawComplexControl()
实现并在您的paintEvent
. 对于像 一样的简单控件QPushButton
,您可以轻松地独立于样式重写其绘图。重绘QToolButton
将是一个更棘手的任务。一个不错的选择是使用QCommonStyle
.
于 2013-03-26T19:55:56.447 回答