Как переместить объект созданный нажатием мыши
Пусть у меня на QGraphicsScene есть QGraphicsItem представляющий кучу камней.
У меня с помощью mousePressEvent (клика по куче камней) создается объект QGraphicsItem представляющий собой один камень.
Как мне сделать так, чтобы не отжимая кнопку мыши я мог перемещать этот создавшийся камень?
Мне нужно подсказать направление мысли, целый код я не прошу потому что вопрос получился абстрактным
Ответы (2 шт):
class Stone: public QGraphicsItem {
public:
Stone(): ..., pressed(false) {
}
void mousePressEvent(QGraphicsSceneMouseEvent *event) {
pressed = true;
}
void mouseMoveEvent(QGraphicsSceneMouseEvent *event) {
if (pressed) {
// Перемещаем объект вместе с мышью.
// Координаты для объекта берем из event
}
}
void mouseReleaseEvent(QGraphicsSceneMouseEvent *event) {
pressed = false;
}
private:
bool pressed;
}
К сожалению, я не понял как внедрить решение Александра.
Оставляю этот ответ, чтобы помочь страждущим,таким как я.
В итоге я решил проблему следующим способом:
В конструкторе кучи я создаю элемент камня и просто напросто прячу его.
Таким образом при следующим клике на кучу мы уже можем с ним работать.
При клике на кучу мы просто показываем камень и в методе mouseMoveEvent кучи его двигаем.
Возможно это костыльно и велосипедно,но я первый раз работаю с QT. Более подробную реализацию можно увидеть тут: https://github.com/religious0atheist/nim_games