写了一个 【QWidget 保持原有行为, 且被添加到 QGraphicsScene,  同时可以在按住Ctrl时 进行移动】 的代码。
试验成功,但不知是否存在【某种隐患】,忘有经验的朋友,指正下~~ 
- class XGraphicsProxyWidget : public QGraphicsProxyWidget
- {
- public:
-     XGraphicsProxyWidget (QGraphicsItem* parent = 0, Qt::WindowFlags wFlags = 0);
-     void                                            SetGraphicsMode(GraphicsItemFlags);
- protected:
-     void                                            mousePressEvent(QGraphicsSceneMouseEvent*);
-     void                                            mouseReleaseEvent(QGraphicsSceneMouseEvent*);
-     void                                            mouseMoveEvent(QGraphicsSceneMouseEvent*);
- private:
-     void                                            StartGraphicsMode();
-     void                                            StopGraphicsMode();
-     bool                                            IsGraphicsMode() const;
- private:
-     GraphicsItemFlags                        m_eWidgetFlag;
-     GraphicsItemFlags                        m_eGraphicsFlag;
- };
- XGraphicsProxyWidget::XGraphicsProxyWidget( QGraphicsItem * parent /* = 0 */, Qt::WindowFlags wFlags /* = 0 */ ) :
-     QGraphicsProxyWidget(parent, wFlags),
-     m_eWidgetFlag(flags()),
-     m_eGraphicsFlag(0)
- {
- }
- void XGraphicsProxyWidget::SetGraphicsMode(GraphicsItemFlags flags)
- {
-     m_eGraphicsFlag = flags;
- }
- void XGraphicsProxyWidget::StartGraphicsMode()
- {
-     m_eWidgetFlag = flags(); // save
-     setFlags(m_eGraphicsFlag);
- }
- void XGraphicsProxyWidget::StopGraphicsMode()
- {
-     setFlags(m_eWidgetFlag);
- }
- bool XGraphicsProxyWidget::IsGraphicsMode() const
- {
-     return flags() == m_eGraphicsFlag;
- }
- void XGraphicsProxyWidget::mousePressEvent(QGraphicsSceneMouseEvent *event)
- {
-     if (event->type() == QEvent::GraphicsSceneMousePress 
-         && (event->modifiers() & Qt::ControlModifier))
-     {
-         StartGraphicsMode();
-         
-         QGraphicsItem::mousePressEvent(event);
-     }
-     else
-     {
-         QGraphicsProxyWidget::mousePressEvent(event);
-     }
- }
- void XGraphicsProxyWidget::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
- {
-     if (IsGraphicsMode())
-     {
-         StopGraphicsMode();
-         QGraphicsItem::mouseReleaseEvent(event);
-     }
-     else
-     {
-         QGraphicsProxyWidget::mouseReleaseEvent(event);
-     }
- }
- void XGraphicsProxyWidget::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
- {
-     if (IsGraphicsMode())
-         QGraphicsItem::mouseMoveEvent(event);
-     else
-         QGraphicsProxyWidget::mouseMoveEvent(event);
- }
测试代码:
- m_pScene = new QGraphicsScene;
-     m_pView = new QGraphicsView(m_pScene, this);
-     //m_pView->resize(800, 600);
-     setCentralWidget(m_pView);
-     QLineEdit* pb = new QLineEdit("text");
-     XGraphicsProxyWidget *proxy = new XGraphicsProxyWidget;
-     proxy->setWidget(pb);
-     proxy->SetGraphicsMode(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable);
-     m_pScene->addItem(proxy);
-     m_pView->show();
因为先点击控件, 后按 ctrl , QWidget状态会有
错误(以QPushButton为例),因此只能做成【必须先按ctrl,再点击QGraphicItem才能移动】。不知道是否有更好的方法可以解决这种现象~~