在paintEvent()函数外使用QPainter | |
| |
来源: ChinaUnix博客 日期: 2007.03.05 14:40 (共有条评论) 我要评论 | |
在Qtopia 4.1.x系列里,默认情况下要使用QPainter画图必须在在paintEvent()函数里,如果在其它地方的话,运行时会提示如下错误 QPainter::begin: Widget painting can only begin as a result of a paintEvent 要避免这个问题可以设置你要画图的那个widget的一个属性,加上类似这样的代码this->setAttribute(Qt::WA_PaintOutsidePaintEvent); 就可以了。 qpainter.cpp 代码里相应实现逻辑,可以看下面 1081 switch (pd->devType()) { 1082 case QInternal::Widget: 1083 { 1084 const QWidget *widget = static_cast(pd); 1085 Q_ASSERT(widget); 1086 1087 if(!d->engine->hasFeature(QPaintEngine::PaintOutsidePaintEvent) 1088 && !widget->testAttribute(Qt::WA_PaintOutsidePaintEvent) 1089 && !widget->testAttribute(Qt::WA_WState_InPaintEvent)) { 1090 qWarning("QPainter::begin: Widget painting can only begin as a " 1091 "result of a paintEvent"); 1092 return false; 1093 } 1094 break; 1095 } 本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/27396/showart_253454.html |
在paintEvent()函数外使用QPainter
最新推荐文章于 2025-02-24 22:11:26 发布