【问题标题】:C++ member variable class Q_PROPERTY not available in QMLC++ 成员变量类 Q_PROPERTY 在 QML 中不可用
【发布时间】: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 中添加完整的命名空间

标签: c++ qt qml


【解决方案1】:

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

Q_PROPERTY( TechnicalPublications::PDFPageView* pageView READ getPageView )

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-22
    • 2016-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多