• 5203阅读
  • 5回复

关于实现窗体中的图形拖拽 [复制链接]

上一主题 下一主题
离线yone20
 
只看楼主 正序阅读 楼主  发表于: 2010-12-17

界面上能显示一个长方体图形,能拖动,旋转这个图形,并能保存该图形的位置,即关闭界面再开始时图形的位置为上次关闭时的位置。这个应该怎么实现呢?请教各位大牛,谢谢

离线XChinux

只看该作者 5楼 发表于: 2010-12-20
用Graphics View Framework。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线yone20
只看该作者 4楼 发表于: 2010-12-17
我这样做似乎不行啊,会闪烁,请大牛指教


  1. #include "dragrect.h"#include <QPainter>
  2. DragRect::DragRect(QWidget *parent, Qt::WFlags flags) : QWidget(parent, flags){ ui.setupUi(this); x = y = 0; //this->setMouseTracking(true);}
  3. DragRect::~DragRect(){
  4. }
  5. void DragRect::paintEvent(QPaintEvent *){ QPainter painter(this); painter.setPen(QPen(Qt::black,2,Qt::SolidLine,Qt::RoundCap)); painter.setBrush(QBrush(Qt::red,Qt::SolidPattern)); painter.drawRect(x,y,200,200); //update();}
  6. void DragRect::mousePressEvent(QMouseEvent *event){ if(event->button() != Qt::LeftButton)return ; shouldMove = true; x = event->x(); y = event->y();}
  7. void DragRect::mouseMoveEvent(QMouseEvent *event){ if(shouldMove) { x = event->x() - x; y = event->y() - y;  update(); }}
  8. void DragRect::mouseReleaseEvent(QMouseEvent *event){ if(event->button() != Qt::LeftButton)return ; shouldMove = false;}
离线roywillow

只看该作者 3楼 发表于: 2010-12-17
印象中窗体中任何的widget都是能拖拽的
不过我从来没处理过拖拽这方面的东西
搜索一下吧,应该不少

QGraphicsItem的拖拽是在Qt4 GUI教程中看到的
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线yone20
只看该作者 2楼 发表于: 2010-12-17
回 1楼(roywillow) 的帖子
能具体点吗?我是初学者,不是很懂
离线roywillow

只看该作者 1楼 发表于: 2010-12-17
尝试QGraphicsItem
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
快速回复
限100 字节
 
上一个 下一个