关于QGraphicsView & QGraphicsScene的问题

ryfdizuo 2010-06-28 02:38:02
我自己的一个VPView 继承了QGraphicsView,重写了虚函数 void paintEvent(QPaintEvent *event);
这是该函数的定义:

void VPView::paintEvent(QPaintEvent *event)
{
QPainter painter(this);
painter.setRenderHint(QPainter::Antialiasing);

myTips->renderTips(&painter);

return QGraphicsView::paintEvent(event);
}


下面这是VPTips::renderTips的定义:

void VPTips::renderTips(QPainter* painter)
{
if ( !active() )
return;

const int Offset = 5;
QFont font("Times", 20, QFont::Normal);

QFontMetrics textMetric(font);
QRectF rect = textMetric.boundingRect( myText );

painter->translate( myPosition );
{
painter->setBrush( Qt::blue );
painter->drawRect( rect.adjusted(0, -Offset, 0, Offset ) );

painter->setBrush(Qt::gray);
painter->drawRect( rect );

painter->setFont( font );
painter->drawText(rect, Qt::AlignCenter, myText);
}painter->translate( -myPosition );
}


VPView的paintEvent函数是执行了,但是myTips总是显示不出来,
请赐教~
...全文
451 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
renqikai 2010-07-01
  • 打赏
  • 举报
回复
看一下你的VPView是不是一个临时变量,要在栈上申请的才行。
要是临时变量的话,画出来之后很快就没有了,看不到的。
cpio 2010-07-01
  • 打赏
  • 举报
回复
是不是QGraphicsView::paintEvent(event);把背景重新填充了?

试试把这句放在最前面看看

21,489

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧