gpt4 book ai didi

C++ 成员变量类 Q_PROPERTY 在 QML 中不可用

转载 作者:行者123 更新时间:2023-12-02 17:59:16 25 4
gpt4 key购买 nike

我正在尝试创建一个新的 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 片段

    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 中收到无效的分组属性访问错误。我在 qml 代码片段中用注释标记了它。

我缩短了代码,因为我有很多代码,但如果我忘记显示任何内容,可以编辑这篇文章。我觉得我在这里错过了一些简单的东西,但似乎无法得到有用的错误。有什么想法吗?

最佳答案

看来我在声明 Q_Property 时需要包含我的命名空间,因为它是一个宏。现在可以访问自定义成员变量了。

Q_PROPERTY( TechnicalPublications::PDFPageView* pageView READ getPageView )

当然,为了缩短问题,我排除了我的类所在的命名空间。

关于C++ 成员变量类 Q_PROPERTY 在 QML 中不可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59687817/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com