首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QT -覆盖QToolButton paint事件

QT -覆盖QToolButton paint事件
EN

Stack Overflow用户
提问于 2013-03-27 03:05:29
回答 1查看 1.7K关注 0票数 0

我有自己的小工具从QToolButton继承的MyToolButton。在paintEvent中,我只想从原始的QToolButton中绘制“背景”。我的意思是,我只需要绘制风格(点击,悬停等),但没有文本和图像。这些东西我想自己画(与自定义格式等)。当我调用QToolButton::paintEvent(ev)时,一切都会被绘制。如何从绘画中排除图像和文本?我假设我应该使用drawControl()drawPrimitive()drawComplexControl(),但是我不能理解所有这些状态

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-27 03:55:56

void QToolButton::paintEvent(QPaintEvent *)的源码如下:

代码语言:javascript
复制
QStylePainter p(this);
QStyleOptionToolButton opt;
initStyleOption(&opt);
p.drawComplexControl(QStyle::CC_ToolButton, opt);

QStylePainter::drawComplexControl调用QStyle::drawComplexControl,这是一个纯虚拟函数,它的实现取决于您使用的样式。您需要的是找到具体实现的源代码(如QWindowsXPStyleQGtkStyle),找到drawComplexControl()实现并在您的paintEvent中使用它。对于像QPushButton这样的简单控件,您可以很容易地重写它的绘图,完全独立于样式。重新绘制QToolButton将是一项更棘手的任务。一个不错的选择是使用QCommonStyle的源代码。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15645344

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档