Предположим, у меня есть абстрактный базовый класс Foo
, и я хочу использовать ссылку, что в сигнале:Как использовать ссылку на абстрактный класс в сигнале Qt?
void FooUpdated(Foo &);
Это не работает, слот согласования никогда не вызывается. Есть ли способ достичь этого, или я должен использовать указатель вместо этого (он работает с указателем).
Редактировать - код
Сигнал (IDecodedFrame
является абстрактным):
void ShowFrameSignal(IDecodedFrame & DecodedFrame);
Слот:
virtual void ShowFrame(IDecodedFrame & DecodedFrame);
Соединение:
connect(this, SIGNAL(ShowFrameSignal(libCommon::IDecodedFrame &)),
sink, SLOT(ShowFrame(libCommon::IDecodedFrame &)));
Отладка показывает, что соединение возвращает true
.
Как слот выглядеть, и как подключить сигнал и слот? –
@Frank: добавлены определения и код для подключения. –
Я не уверен в ответе, не оглядываясь в документации, но я уверен, что IDecodedFrame должен получить из другого базового класса Qt и реализовать некоторые требуемые функции. Возможно, конструктор копирования, чтобы получить безопасное копирование. –