Wpis z mikrobloga

#cpp #programowanie #qt

Orientuje się ktoś czemu pluginy do Qt (w sensie nie do QtCreatora a do aplikacji) koniecznie muszą być QObjectami? Nie mogę znaleźć wyjaśnienia czemu AKURAT każdy plugin MUSI koniecznie być QObjectem. Wyjaśnienie może być dowolne tak naprawdę "bo QPluginLoader używa qobjectcast i spodziewa się QObjectu, tyle", ale chciałbym wiedzieć czemu ja muszę to robić.
  • 3
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@tell_me_more: Moja teoria jest taka, że QPluginLoader zwraca QObject* z instance(), bo tak jest zrobione (QObject pełni rolę "szablonu" pod którym można ukryć wskaźnik na faktyczny obiekt). Po odebraniu QObject* trzeba zrobić qobject_cast na to co my tam chcemy za interfejs wyciągnąć. No wygląda mi to po prostu na taką przyjętą konwencję ukrywania uniwersalnych wskaźników pod QObject*.
  • Odpowiedz
@Khaine: bycie QObjectem jest potrzebne, żeby MOCe działały (propertisy, sloty, sygnały, i inne bajery z tymi ich makrami). Pluginy używają tej mocowej magii do specyfikacji interfejsu itp:

QPLUGINMETADATA(IID "org.qt-project.Qt.Examples.PlugAndPaint.FilterInterface" FILE
  • Odpowiedz