Я пытаюсь создать класс, расширяющий QObject, который содержит список другого класса, расширяющего QObject. При построении объекта списка я передаю объект в конструктор, содержащий все точки, необходимые для построения моих объектов. Однако у меня проблема с тем, что мои конструкторы как-то помечены как частные.
//PDFOutline.h
public:
Q_OBJECT
Q_PROPERTY( QString name READ name CONSTANT )
PDFOutlineItem( Poppler::OutlineItem outline, QObject* parent = nullptr );
PDFOutlineItem( QObject* parent = nullptr);
QString name() { return m_text; }
private:
//QList<PDFOutlineItem> m_children;
int m_page;
QString m_text;
};
class PDFOutline : public QObject
{
public:
Q_OBJECT
PDFOutline( QVector<Poppler::OutlineItem> outline, QObject* parent = nullptr );
PDFOutline( QObject* parent = nullptr );
//QList<PDFOutlineItem> getOutline() { return m_outline; }
private:
QList<PDFOutlineItem*> m_outline;
};
//PDFOutline.cpp
PDFOutline::PDFOutline( QVector<Poppler::OutlineItem> outline, QObject* parent )
: QObject( parent )
{
for( auto item : outline )
{
m_outline.append( new PDFOutlineItem( item, this ) ); //This is the line throwing the error
}
}
PDFOutline::PDFOutline( QObject* parent )
: QObject( parent )
{
}
PDFOutlineItem::PDFOutlineItem( Poppler::OutlineItem outlineItem, QObject* parent )
: QObject( parent ),
m_page( outlineItem.destination()->pageNumber() ),
m_text( outlineItem.name() )
{
}
PDFOutlineItem::PDFOutlineItem( QObject* parent )
: QObject( parent )
{
}
Ошибка вывода следующая:
In file included from TechnicalPublications/PDFOutline.cpp:1:0:
TechnicalPublications/PDFOutline.h: In constructor 'TechnicalPublications::PDFOutline::PDFOutline(QVector<Poppler::OutlineItem>, QObject*)':
TechnicalPublications/PDFOutline.h:17:2: error: 'TechnicalPublications::PDFOutlineItem::PDFOutlineItem(Poppler::OutlineItem, QObject*)' is private
PDFOutlineItem( Poppler::OutlineItem outline, QObject* parent = nullptr );
^
TechnicalPublications/PDFOutline.cpp:13:52: error: within this context
m_outline.append( new PDFOutlineItem( item, this ) );
^
Надеюсь, мне не хватает чего-то глупого , но возможно ли это? Моя цель - использовать это в QML для заполнения ListView, но я, кажется, не могу обойти этот вопрос.
Есть мысли?