【发布时间】:2020-01-10 19:21:31
【问题描述】:
我正在尝试创建一个新的 QML QQuick 对象,该对象将包含 QQuickPaintedItem 的子对象。
以下是我的 c++ 代码的缩短部分
// PDFDocument.h //
class PDFDocument : public QQuickItem
{
public:
Q_OBJECT
Q_PROPERTY( PDFPageView* pageView READ getPageView )
PDFDocument( QQuickItem* parent = nullptr );
~PDFDocument();
PDFPageView* getPageView() { return &m_pageView; }
private:
PDFPageView m_pageView;
};
//PDFDocument.cpp//
PDFDocument::PDFDocument( QQuickItem* parent /*= nullptr*/ )
:QQuickItem( parent )
{
}
//PDFPageView.h//
class PDFPageView : public QQuickPaintedItem
{
public:
Q_OBJECT
Q_PROPERTY( int dpi MEMBER m_dpi NOTIFY dpiChanged )
Q_SIGNALS:
void dpiChanged();
public:
PDFPageView( QQuickItem* parent = nullptr );
~PDFPageView();
void paint( QPainter* painter_p );
private:
int m_dpi = 144; //default dpi to 144
};
接下来是实际的QML sn-p
PDFDocument
{
id: pdfDocument
anchors
{
fill: parent
centerIn: parent
}
pageView.dpi: 200 //Invalid grouped property access
}
类型也在引擎中注册
qmlRegisterType<PDFDocument>( "Nordco.TechPubs", 1, 0, "PDFDocument" );
qmlRegisterType<PDFPageView>( "Nordco.TechPubs", 1, 0, "PDFPageView" );
由于某种原因,我在 QML 中收到了 Invalid grouped property access 错误。我在 qml 代码 sn-p 中用注释标记了它。
我缩短了代码,因为我有很多,但如果我忘记显示任何内容,可以编辑这篇文章。我觉得我在这里遗漏了一些简单的东西,但似乎没有得到有用的错误。有什么想法吗?
【问题讨论】:
-
你的问题是什么,或者是什么问题?
-
@folibis 对不起,我应该用更多的评论来澄清问题。使用...编辑问题由于某种原因,我在 QML 中收到 Invalid grouped property access 错误。我在 qml 代码 sn-p 中用注释标记了它。
-
pageView { dpi: 200 }工作吗? -
@Amfasis 不幸的是,这是同一个问题
-
哦,另一个问题:你使用命名空间吗?您应该在 Q_PROPERTY 中添加完整的命名空间