Qt_QGraphicsScene如何用鼠标画图?

Oskar_Sun 2014-11-18 04:37:15
在QGraphicsScene中如何用鼠标拖动画图?就类似于涂鸦板的的效果,要求鼠标画出一个矩形,可以实现拖动、旋转、缩放。
我现在可以实现画出已知设定后参数的矩形并实现上述功能,但如果改用鼠标画图的话,返回的bounding大小怎么设置?
//QRectF PaintItem::boundingRect() const
{
qreal penWidth=1;
return QRectF(startPoint,QSizeF(endPoint.x() - startPoint.x()+1,
endPoint.y() - startPoint.y()+1));
}
void PaintItem::paint(QPainter *painter,const QStyleOptionGraphicsItem *option,QWidget *widget)
{

int x,y,w,h;
x = startPoint.x();
y = startPoint.y();
w = endPoint.x() - x;
h = endPoint.y() - y;
painter->setBrush(Qt::red);

painter->drawRect(x,y,w,h);

}

这样的设置无法实现,程序可以运行,但鼠标点击拖动什么都画不出。
...全文
935 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
px_cmd 2017-06-28
  • 打赏
  • 举报
回复
请问你这个问题最后解决了吗?
Oskar_Sun 2014-11-19
  • 打赏
  • 举报
回复
引用 4 楼 foruok 的回复:
你是一个涂鸦板,你画图肯定超不过你的boundingRect,比如boundingRect是(0, 0, 400, 400),你就只能在这个范围内画。
可能您没理解我的意思,比如我要用鼠标画两个矩形,一个是x*x,一个是y*y (x和y大小不确定),每一个矩形作为一个item可以实现缩放拖动,所以我要求一个返回boundingRect是x*x(刚好和我的矩形一样大,或者大二分之一个画笔宽),另一个boundingRect返回y*y(或者大二分之一个画笔)。这样可以实现么?
foruok 2014-11-19
  • 打赏
  • 举报
回复
你是一个涂鸦板,你画图肯定超不过你的boundingRect,比如boundingRect是(0, 0, 400, 400),你就只能在这个范围内画。
Oskar_Sun 2014-11-18
  • 打赏
  • 举报
回复
引用 1 楼 foruok 的回复:
返回一个稍大的矩形,能包住你画的图像即可。
QRectF PaintItem::boundingRect() const
{
    qreal penWidth=1;
    return QRectF(startPoint.x()-penWidth/2,startPoint.y()-penWidth/2,
                  (endPoint.x() - startPoint.x()+penWidth/2),(endPoint.y() - startPoint.y()+penWidth/2));

}
我修改成这样,还是不可以
Oskar_Sun 2014-11-18
  • 打赏
  • 举报
回复
引用 1 楼 foruok 的回复:
返回一个稍大的矩形,能包住你画的图像即可。
但是现在不确定我要画多大的矩形,我上面代码中不就是返回要画的矩形同样大的边框么?
foruok 2014-11-18
  • 打赏
  • 举报
回复
返回一个稍大的矩形,能包住你画的图像即可。

16,214

社区成员

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

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