如何在QML中创建自定义基本类型?

dte*_*ech 2 c++ customization qt types qml

我似乎没有找到任何有关向QML添加基本类型的资源.我不是指QObject或更高的派生元素,而是基本类型 - bool,int,real等.

在消息来源中没有任何运气挖掘......

所以任何信息都表示赞赏.

Mar*_*inJ 5

我假设您想要注册比int,bool,real更复杂的类型,因为它们已经存在.

你不能在Qt 4.x中这样做.在Qt 5(QML 2)中是可能的,但是没有公共API.如果你仍然想要这样做,你需要深入研究一些代码,看看它是如何完成的,因为没有文档.

您需要为每个类型实现一个QQmlValueTypeProvider(qqmlglobal_p.h)并创建QQmlValueTypeBase <>子类(qqmlvaluetype_p.h).然后在插件的registerTypes()中使用QQml_addValueTypeProvider()注册您的值类型提供程序.

您可以看到QtLocation模块中的QGeoCoordinate,QGeoRectangle等示例:http://qt.gitorious.org/qt/qtlocation/trees/master/src/imports/location

祝好运.

  • 有趣的是,QML让一些繁琐的事情变得容易,而且一些简单的事情变得单调乏味......试一试. (6认同)