Я хотел бы создать новый класс MyPath
, который наследует QQuickPath
. Насколько я узнал, QQuickPath
- частный класс. Есть ли «чистый» способ сделать это?Qt: Как наследовать класс QQuickPath
Моя цель создает пользовательский тип QML MyPath
который имеет некоторые расширенные функциональные возможности, используя QPainterPath
atribute из QQuickPath
(по this link).
Спасибо за помощь.
Edit:
Qt Creator теперь может предложить QQuickPath
но компиляция терпит неудачу.
Я следовал инструкциям, которые разместил @ Michal-W-urbańczyk и создали этот класс заголовок
#ifndef C_H
#define C_H
#include <QtQuick/private/qquickpath_p.h>
#include <QObject>
class C : public QQuickPath
{
Q_OBJECT
public:
C(QObject *parent = 0);
~C();
signals:
public slots:
};
#endif // C_H
и исходный файл
#include "c.h"
C::C(QObject *parent)
: QQuickPath(parent)
{
}
C::~C()
{
}
и я получил эти ошибки:
c.o: In function `C::C(QObject*)':
../app/gui/c.cpp:4: undefined reference to `QQuickPath::QQuickPath(QObject*)'
c.o: In function `C::~C()':
../app/gui/c.cpp:8: undefined reference to `QQuickPath::~QQuickPath()'
moc_c.o: In function `C::qt_metacast(char const*)':
../app/moc_c.cpp:79: undefined reference to `QQuickPath::qt_metacast(char const*)'
moc_c.o: In function `C::qt_metacall(QMetaObject::Call, int, void**)':
../app/moc_c.cpp:84: undefined reference to `QQuickPath::qt_metacall(QMetaObject::Call, int, void**)'
moc_c.o:(.data.rel.ro+0x0): undefined reference to `QQuickPath::staticMetaObject'
moc_c.o:(.data.rel.ro._ZTV1C[_ZTV1C]+0x70): undefined reference to `QQuickPath::componentComplete()'
moc_c.o:(.data.rel.ro._ZTV1C[_ZTV1C]+0x78): undefined reference to `QQuickPath::classBegin()'
moc_c.o:(.data.rel.ro._ZTV1C[_ZTV1C]+0xa0): undefined reference to `non-virtual thunk to QQuickPath::classBegin()'
moc_c.o:(.data.rel.ro._ZTV1C[_ZTV1C]+0xa8): undefined reference to `non-virtual thunk to QQuickPath::componentComplete()'
moc_c.o:(.data.rel.ro._ZTI1C[_ZTI1C]+0x10): undefined reference to `typeinfo for QQuickPath'
Thanks
Да ... Я обнаружил, что я получаю то же самое ошибки, когда вы используете официальные двоичные файлы Qt. Он работает, однако, когда я строю Qt из исходного кода самостоятельно (что я вообще делаю, чтобы получить символы отладки). Я посмотрю на это ближе через день или два. –
Думаю, у меня это есть. Я считаю его макросом 'QT_BUILD_INTERNAL'. Я обновил свой ответ. Если у вас возникнут какие-либо проблемы, напишите комментарий к моему ответу - я не получаю уведомление при редактировании вопроса. –