• 5765阅读
  • 9回复

怎样在QGraphicsItem::mousePressEvent时画图? [复制链接]

上一主题 下一主题
离线liuxu_lx7
 
只看楼主 正序阅读 楼主  发表于: 2011-09-14
Joint 派生自QGraphicsItem

void Joint::mousePressEvent(QGraphicsSceneMouseEvent* event)
{
    QPainter painter(event->widget());
    painter.setPen(QPen(Qt::yellow));
    painter.setBrush(QBrush(Qt::yellow));
    painter.drawEllipse(0, 0, 500, 500);
    update();
}

什么也没画出来。
以前我都是在 ::paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget /* = 0 */) 里画,现在需要在鼠标按下(之后是移动)时绘画。
离线scorpiuseol
只看该作者 9楼 发表于: 2012-02-28
lz画静态图还是动态图哦?,,:)
离线米饭拌面

只看该作者 8楼 发表于: 2012-02-27
在paint函数里直接画也是可以的,你用鼠标事件我还以为你要根据指针位置绘制什么呢 你这、、、明显就是只是在mousePress的时候 给个状态 然后刷新一下你的绘制区域 就行了 当然你得在paint函数里取你的点击状态决定是否绘制就ok了 简单呢 。
另外说一下,刷新的时候 最好只刷新你需要刷新的区域就可以了 尽量别全刷新,当然了如果你的图比较小 数据需要处理的也少就全刷就好了 反正没影响、、、
QQ:32336134
离线jdwx

只看该作者 7楼 发表于: 2012-02-24
Re:回 3楼(jdwx) 的帖子
引用第6楼dxfans于2012-02-24 19:34发表的 回 3楼(jdwx) 的帖子 :
画到QPixmap里再贴回去,双缓冲?
Qt已经优化了界面显示技术,双缓冲在MFC中使用的比较多、、

Qt自带双缓冲,先画到QPixmap是没有办法的办法。
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线dxfans

只看该作者 6楼 发表于: 2012-02-24
回 3楼(jdwx) 的帖子
画到QPixmap里再贴回去,双缓冲?
Qt已经优化了界面显示技术,双缓冲在MFC中使用的比较多、、
离线dxfans

只看该作者 5楼 发表于: 2012-02-24
回 4楼(liuxu_lx7) 的帖子
在窗口部件的paintEvent函数里画图即可
离线liuxu_lx7
只看该作者 4楼 发表于: 2011-09-14
哦,看来mousePressEvent 时创建QPainter的方案是不可行的。多谢楼上几位~
离线jdwx

只看该作者 3楼 发表于: 2011-09-14
回 2楼(dxfans) 的帖子
QPainter不是什么时间都可用,这个 很烦人,只能画到QPixmap里再贴回去
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线dxfans

只看该作者 2楼 发表于: 2011-09-14
把画图的代码都放到paint函数里,根据数据进行画图;mousePressEvent函数只是设置你要绘图的数据即可,然后再updata或者repaint 即可
离线xinqingfly

只看该作者 1楼 发表于: 2011-09-14
你把画图的代码放到paint  然后在mousePressEvent里update一下
菜鸟也是鸟
快速回复
限100 字节
 
上一个 下一个