• 6492阅读
  • 5回复

QGraphicsWidget在场景中的拖拽 [复制链接]

上一主题 下一主题
离线wjz2047
 

只看楼主 倒序阅读 楼主  发表于: 2014-02-16
       最近要实现这样一个功能,在窗口显示多张图片,并能对图片进行整体的缩放和拖拽。
因为涉及到多张图片的显示和交互事件,我选择使用图形视图框架,即QGraphicsView和QGraphicsScene。
又因为需要对放入的图片进行布局,所以我选择使用QGraphicsWidget。
代码如下:
  1. MyWidget *wg1 = new MyWidget;
  2. MyWidget *wg2 = new MyWidget;
  3. MyWidget *wg3 = new MyWidget;
  4. QGraphicsLinearLayout *linearLayout = new QGraphicsLinearLayout(Qt::Vertical);
  5. QGraphicsWidget *widget = new QGraphicsWidget;
  6. linearLayout->addItem(wg1);
  7. linearLayout->addItem(wg2);
  8. linearLayout->addItem(wg3);
  9. widget->setLayout(linearLayout);
  10. scene->addItem(widget);

MyWidget为QGraphicsWidget的子类

简单来说就是scene中有一个widget,widget中有若干张图片,现在如何实现图片的拖动呢?
离线wjz2047

只看该作者 1楼 发表于: 2014-02-16
我想通过setpos函数来改变widget的位置,不知可不可以?
离线wjz2047

只看该作者 2楼 发表于: 2014-02-16
qt中会涉及到drag和drop,不知大家有何看法
离线雷小某

只看该作者 3楼 发表于: 2014-02-17
你可以把图片画到Item里,而不用专门画到一个单独的Widget里。我没记错的话,Graphics下的Item是用相关方法支持拖拽的,貌似只需要重写相关方法就好。
离线wjz2047

只看该作者 4楼 发表于: 2014-02-17
回 雷小某 的帖子
雷小某:你可以把图片画到Item里,而不用专门画到一个单独的Widget里。我没记错的话,Graphics下的Item是用相关方法支持拖拽的,貌似只需要重写相关方法就好。 (2014-02-17 12:06) 

你说的对,对Item进行拖拽是很方便的。只是我需要对Item进行布局,所以才使用了QGraphicsWidget。也正是因此,思路要发生变化
离线wjz2047

只看该作者 5楼 发表于: 2014-02-19
回 wjz2047 的帖子
wjz2047:我想通过setpos函数来改变widget的位置,不知可不可以? (2014-02-16 21:51) 

这样做的确可以改变widget的位置,达到拖动的效果。可是我发现移动的时候有点卡,而且widget的移动导致其显示的图片重新绘制,有闪烁效果,这怎么解决呢?
快速回复
限100 字节
 
上一个 下一个