Я в настоящее время подключения сигнала к функции, как это:Эквайринг ссылки на излучающий виджет с QtRuby
dashboard.ui.start_button_r1.connect(:clicked, dashboard.ui.start_button_r1, :handler)
start_button_r1
, где это QPushButton
Теперь то, что я хочу, это ссылка на отправляющий виджет в пределах handler
, так как я подключу этот сигнал к нескольким виджетам. В идеале я хотел бы, чтобы моя функция обработчика получила аргумент emitter
, с которым я могу поиграть. Я мог бы поместить handler
в класс, наследуемый от Qt::Object
(скажем HandlerContainer
) и позвонить по номеру sender()
, но затем как подключить сигнал к внутреннему методу HandlerContainer
? Я пробовал instance.method(:handler)
, но соединение не получает слотов таким образом
Обычно я использую этот подход в PyQt, но не могу понять, как это сделать с Ruby. Я чувствую, что делаю что-то ужасно, потому что не так много обсуждений о том, как получить отправителя из одного слота с помощью QtRuby. Как это обычно делается? Я читал о QSignalMapper, но это кажется ужасно излишним для моего варианта использования.
Конечно. Это обычный подход. Однако QObject :: sender() является методом экземпляра и не может быть вызван из моего слота. Я могу сделать обработчик частью объекта HandlerContainer и наследовать от QObject. Проблема заключается в подключении сигнала. QtRuby ожидает символ, но какой символ я должен использовать для ссылки на метод экземпляра из объекта? –
@JuanPablo 'connect (dashboard.ui.start_button_r1, SIGNAL (clicked()), reference_to_instance_of_Handler_Container, SLOT (обработчик());' хотя я не знаю точного синтаксиса SIGNAL (clicked()) и SLOT (handler()) синтаксис в QtRuby – Shf
@JuanPablo 'Qt :: Object.connect (@ dashboard.ui.start_button_r1, SIGNAL (« clicked() »), @reference_to_instance_of_Handler_Container, SLOT (« обработчик() »))' также, вы можете найти эта ссылка полезна - https://www.ruby-forum.com/topic/192770 – Shf