打印出自定义对象

时间:2017-12-20 12:37:47

标签: c++ qml qtquick2

在我的C ++ / QML应用程序中,我使用了许多通过一个代理对象向QML公开的C ++类。实际上看起来像下面的例子:

class ProxyObject
{
    Q_GADGET
    Q_PROPERTY(Version MyVersion READ GetMyVersion)

public:
    ProxyObject();
    Version GetMyVersion();
}

class Version
{
    Q_GADGET
public:
    Version();
    QString toString() const;
}

所有这些课程当然都暴露在QML中:

qmlRegisterSingletonType<ProxyObject>("com.MyApp", 1, 0, "ProxyObject", example_qobject_singletontype_provider);
qRegisterMetaType<Version>("Version");

现在我想在QML中使用它们:

import QtQuick 2.9
import QtQuick.Controls 2.2
import com.MyApp 1.0

ApplicationWindow {
    id: mainWindow
    visible: true

    Label {
        text: ProxyObject.Version
    }
}

运行此代码导致控制台警告:

  

无法将版本分配给QString

在我看来这看起来是正确的,但我怎么能打印出我的对象? 我添加了

QString toString() const;

到Version类,但这没有帮助。

现在我使用属性的变通方法,我添加了

Q_PROPERTY(QString ToString READ toString)

到Version类,因此在QML中使用它:

Label {
        text: ProxyObject.Version.ToString
    }

但这对我来说很恶心。当我看到内置对象时,QDateTime可以毫无问题地打印到控制台。那么我怎么能这样做并打印出来来控制我的自定义对象呢?

0 个答案:

没有答案