#wxwidgets
#wxwidgets
Вопрос:
Я хотел бы нарисовать объект (например, круг / прямоугольник) на wxFrame и прикрепить к каждому объекту обработчик событий, чтобы при наведении мыши объект можно было переместить в другую позицию.
В настоящее время я не могу найти какие-либо заданные образцы или решение для этого. Я ценю любую помощь, связанную с этой проблемой.
Комментарии:
1. вероятно, это связано с тем, что вы не должны рисовать непосредственно на объекте wxFrame. вы должны рисовать на wxPanel
Ответ №1:
Как я уже упоминал, вы не должны рисовать на wxFrame. Вместо этого вы можете использовать wxPanel для рисования своих материалов. Вот ссылка с примером чертежа
Комментарии:
1. Спасибо, что поправили меня. Я могу рисовать несколько объектов circle на панели, но как я могу получить доступ к этим объектам, нарисованным на панели, чтобы я мог пометить обработчик событий, чтобы переместить его положение при выборе.
2. вы прикрепляете обработчик событий к панели и вместе с некоторой бухгалтерией (некоторый выбранный вами контейнер, содержащий текущий размер и положение вашего прямоугольника) вы знаете, какой объект выбран, и перемещаете его в соответствии с новым положением мыши
3. Я прикрепил здесь обработчик событий к панели, используя этот набор кодов: Panel1-> Connect(wxID_ANY, wxEVT_LEFT_DOWN, wxMouseEventHandler(TestFrame::OnLeftDClick), NULL,this ); Я в правильном направлении?
4. Похоже на то. Вам следует рассмотреть возможность использования другой перегрузки connect (той, в которой вам не нужно указывать wxID_Any), поскольку это «может» привести к нежелательному поведению. или же вы могли бы использовать «Connect(Panel1->getId(),wxEVT_LEFT_DOWN,wxMouseEventHandler(TestFrame::OnLeftDClick), NULL,this);
5. Я могу заставить обработчик работать, но не объект перемещать свою позицию при наведении курсора мыши и наведении курсора мыши на новую позицию.