カーソルを選択して動かすには当然マウスのイベントを監視しなければなりません。
void hogehoge::mousePressEvent(QMouseEvent *e) { if (e->button() & Qt::LeftButton){ if (e->modifiers() & Qt::ShiftModifier){ //マウスがカーソルの範囲かどうかチェックする(自分で用意) if (isCursorHitted(e->x(), e->y())) cursor_selected = true ; else cursor_selected = false ; } } } void hogehoge::mouseMoveEvent(QMouseEvent *e) { if (e->buttons() ==Qt::LeftButton){ if (e->modifiers() & Qt::ShiftModifier){ if (cursor_selected){ cursor_move(e->x(), e->y()) ; repaint() ;// paintEvent() を発生させる。 } } void hogehoge::paintEvent(QPaintEvent *e) { drawCursor() ; //自分で用意する }