Как сделать Q_PROPERTY в интерфейсе без наследования от QObject? Приветствую! В общем очень хочется сделать, что бы можно было Q_PROPERY сигналы и слоты вынести в интерфейсы. С сигналами и слотами проблем почти не возникло и вынеслись нормально, а вот Q_PROPERTY не хочет. А именно не хочет moс файл генерироваться, если нет Q_OBJECT или Q_GADGET если прописывать, то Qt начинает ругаться, что класс должен быть унаследован от QObject. Попробовал вручную внести правки в moc_*.cpp и удалось добиться нормальной работы Q_PROPERTY, но разумеется при перекомпиляции все изменения в moc файле вытираются и делать отдельный moc это по-моему адцкий костыль. Наследовать интерфейс от QObject не вариант - в дальнейшем может быть множественное наследование и может получиться, что будет наследование от нескольких QObject, на что Qt будет ругаться матом. Подскажите, как сделать так, что бы Q_PROPERTY можно было объявлять в интерфейсе? Либо может можно как-либо переопределить работу moc генератора(запретить генерирование staticMetaObject) без его пересборки из сырцов.
К сожалению, Qt требует, чтобы класс с Q_PROPERTY был унаследован от QObject или Q_GADGET, чтобы правильно сгенерировать файл moc. Наследование интерфейса от QObject не является хорошим подходом из-за ограничения на множественное наследование от QObject, как вы верно отметили.
Если вы хотите избежать наследования от QObject, можно попробовать использовать другой подход, как например, создать отдельный класс с Q_PROPERTY и работать с ним через указатель или ссылку в ваших интерфейсах. Например, вы можете создать отдельный класс с Q_PROPERTY и передавать его в конструктор интерфейса, чтобы работать с его свойствами.
Также можно попробовать использовать Q_PROPERTY только в реализации класса, который унаследован от QObject, и передавать значения свойств через методы или другие способы в ваши интерфейсы.
Если вам действительно нужно использовать Q_PROPERTY в интерфейсе без наследования от QObject, то возможно вам придется прибегнуть к использованию сторонних библиотек или других методов для работы со свойствами в вашем приложении.
К сожалению, Qt требует, чтобы класс с Q_PROPERTY был унаследован от QObject или Q_GADGET, чтобы правильно сгенерировать файл moc. Наследование интерфейса от QObject не является хорошим подходом из-за ограничения на множественное наследование от QObject, как вы верно отметили.
Если вы хотите избежать наследования от QObject, можно попробовать использовать другой подход, как например, создать отдельный класс с Q_PROPERTY и работать с ним через указатель или ссылку в ваших интерфейсах. Например, вы можете создать отдельный класс с Q_PROPERTY и передавать его в конструктор интерфейса, чтобы работать с его свойствами.
Также можно попробовать использовать Q_PROPERTY только в реализации класса, который унаследован от QObject, и передавать значения свойств через методы или другие способы в ваши интерфейсы.
Если вам действительно нужно использовать Q_PROPERTY в интерфейсе без наследования от QObject, то возможно вам придется прибегнуть к использованию сторонних библиотек или других методов для работы со свойствами в вашем приложении.