我有自己的部件MyToolButton,它从QToolButton
继承。在paintEvent中,我只想从原始的QToolButton
中抽取“背景”。我的意思是,我只需要绘制样式(点击,悬停等),但没有文字和图像。这些东西我想通过我自己绘制(使用自定义格式等)。当我打电话给QToolButton::paintEvent(ev)
时,一切都被涂上了。如何从绘画中排除图像和文字?我supose,我应该使用drawControl()
,drawPrimitive()
和drawComplexControl()
但不能明白所有这些状态void QToolButton::paintEvent(QPaintEvent *)
QT - 覆盖QToolButton绘制事件
0
A
回答
0
的源代码是:
QStylePainter p(this);
QStyleOptionToolButton opt;
initStyleOption(&opt);
p.drawComplexControl(QStyle::CC_ToolButton, opt);
QStylePainter::drawComplexControl
电话QStyle::drawComplexControl
,这是一个纯虚函数,它的实现取决于你使用的风格。你需要的是去具体的障碍的源代码(如QWindowsXPStyle
或QGtkStyle
),找到drawComplexControl()
的实施,并将其用于paintEvent
。对于像QPushButton
这样的简单控件,您可以非常方便地独立重写其绘图。重绘QToolButton
将是一个更棘手的任务。 一个不错的选择是使用QCommonStyle
的源代码。
相关问题
- 1. X11:绘制覆盖图/从覆盖图中移除绘图
- 2. python绘制覆盖数据
- 3. 覆盖在C#中绘制控件
- 4. 覆盖JCS事件
- 5. Jquery事件覆盖
- 6. OnClick事件覆盖
- 7. jQuery - 覆盖事件?
- 8. 覆盖QLabel能够绘制图形
- 9. 用户控制事件和覆盖
- 10. Qt - 覆盖QTreeView :: drawBranches()
- 11. 覆盖jfreechart绘制一个点,而不覆盖drawItem
- 12. Qt Pb与QAction,QToolBar,QToolButton
- 13. qt qtoolbutton图标模糊
- 14. 在MainWindow中覆盖小部件的绘画事件
- 15. 覆盖绘图MGRS
- 16. 覆盖检查事件
- 17. 覆盖表单事件
- 18. 覆盖派生的事件
- 19. 覆盖页面事件
- 20. 覆盖webBrowser单击事件
- 21. 意外事件覆盖
- 22. 覆盖Ajax成功事件
- 23. 用jQuery.click覆盖MooTools事件()
- 24. 在VB.NET中覆盖事件
- 25. 覆盖Sharepoint列表事件
- 26. 覆盖事件属性
- 27. 覆盖interrups悬停事件
- 28. 的Javascript事件覆盖
- 29. 在UIView上绘制覆盖图
- 30. MKCircle覆盖图未在MapView上绘制
你是如何找到源代码的?我是QT的新手,当我通过CTRL +单击进入标题声明时,F4不加载.cpp – Dibo 2013-03-26 20:21:55
它取决于您使用的操作系统和Qt安装的类型。在Windows上使用Qt库时,可以在%QT_HOME%/ src中找到源代码。当使用基于deb的linux及其存储库时,可以使用命令“apt-get source qt4-x11”下载源代码。最后,在任何系统中,您都可以从此处下载:http://releases.qt-project.org/qt4/source/qt-everywhere-opensource-src-4.8.4.tar.gz – Amartel 2013-03-27 04:05:25
修复:不是%QT_HOME %/ src - 但是%QTDIR%/ src – Amartel 2013-03-27 04:32:45