Jump to content

В 2.18 версии отсутствует метод addCallback в WidgetButton, устаревшая документация


photo

Recommended Posts

Добрый вечер! В документации на WidgetButton устаревшая информация.
Вызов привязки обработчика события клика на кнопку теперь выглядит таким образом:
Было:  m_btn->addCallback(Gui::CLICKED, MakeCallback(onButtonClicked));
Стало: m_btn->getEventClicked().connect(this, &BaseHUD::onButtonClicked);

Link to comment

Также не нашел в документации. Есть ли возможность получить объект-sender события в обработчике? Например есть несколько объектов, которые вызывают событие, и, дабы не плодить кучу обработчиков, обрабатывать объекты внутри одного обработчика.

Link to comment

Здравствуйте, @Nehuhry!

Спасибо, сниппеты обновлены!

Что касается sender в обработчике, то так все и работает - вот, например, для виджетов (widget - как раз и есть sender):

// implement the Clicked event handler
void clicked_event_handler(const Ptr<Widget> & widget,  int mouse_buttons)
{
	Log::message("\Handling Clicked event\n");
}

Вот еще пример, может пригодиться:

class EventSender
{
	public:

		void Update()
		{
			event.run(this, frame);
			frame++;
		}

		Unigine::Event<EventSender *, int> &getEvent() { return event; }

	private:
		int frame;
		Unigine::EventInvoker<EventSender *, int> event;
}

 

  • Like 2
Link to comment
14 hours ago, fox said:

Здравствуйте, @Nehuhry!

Спасибо, сниппеты обновлены!

Что касается sender в обработчике, то так все и работает - вот, например, для виджетов (widget - как раз и есть sender):

// implement the Clicked event handler
void clicked_event_handler(const Ptr<Widget> & widget,  int mouse_buttons)
{
	Log::message("\Handling Clicked event\n");
}

Вот еще пример, может пригодиться:

class EventSender
{
	public:

		void Update()
		{
			event.run(this, frame);
			frame++;
		}

		Unigine::Event<EventSender *, int> &getEvent() { return event; }

	private:
		int frame;
		Unigine::EventInvoker<EventSender *, int> event;
}

 

Благодарю за ответ!

Link to comment
×
×
  • Create New...