Pull to refresh

Comments 15

У меня вопросы :)


Имена классов с маленькой буквы… ну, такое…
Зачем интерфейс — наследник куобжекта, если в нем только pure virtual функции?
В составе примеров куте есть отличный plug and paint на эту тему :)

Первая статья и всё такое, извиняюсь:). А причём тут plug and paint? вы мне предлагаете рисовать весь виджет(все кнопки, весь функционал?), Зачем если виджет несёт за собой много полезных функций, и второе я добавляю свой функционал с помощью виртуализации и третье я могу легко работать с этим виджетом, скрывать когда мне нужно удалять, загружать заново. Вы не поняли суть стать.
промахнулся с веткой, ответ рядом :/
Наследник QObject нужен для сохранения системы сигналов и слотов(по необходимости), если не нужны сигналы можно и не наследоваться от него
Ваша идиллическая картина рушится в следующий момент после возникновения необходимости реализации нескольких таких интерфейсов в одном плагине. (Почему? потому что возникает diamond problem)

Лучше так:
class Plugin : public QObject, public Interface, public Interface2 {}


а из интерфейсов убрать наследование от куобжекта, тем более, оно там ни к чему, на самом деле :)
Насчёт убрать QObject да возможно, просто привычно работать с объектами.
Во второй части статьи, создаётся виджет с интерфейсами, я могу прописать сколько хочу интерфейсов, в том числе сигналы и слоты и передавать любые данные, хоть структурные.
Плагин служит лишь фабрикой для создания виджета, где я могу прописать сколько угодно интерфейсов
И там нету diamond problem, плагин и созданный виджет не связаны между собой.
«там» — нет. я написал, при каких условиях она может возникнуть (и это совсем не надуманная проблема).
Я вам больше скажу, Qt просто не даст отнаследовать класс от более, чем одного QObject-based класса.
об этом я автору и пытаюсь донести!

а «не даст отнаследовать класс от более, чем одного QObject-based класса» — это та самая «diamond problem» и конкретно к куте отношения не имеет :)
Зачем вы ее упоминали тогда?
У меня создается впечатление, что милорд читает мои ответы через строку.

Diamond problem упоминается здесь потому, что она есть в с++ независимо от того, пишет ли автор с применением куте или на голом с++. Надеюсь, так понятнее выразил свою мысль.
> А причём тут plug and paint

он тут при том, что это пример плагинной архитектуры программы от создателей куте. И не имеет некоторых недостатков, присущих данной статье. Только лишь.
Sign up to leave a comment.

Articles