在Qt C ++项目中从Xamarin项目中重用代码

我有一个简单的应用程序是在Xamarin开发的移动设备和Windows桌面。 为了开发C#,(Galasoft)MVVM-Light和Repository Pattern被使用。 后端不是这个项目的一部分。 但是对于完整的图片,使用REST EndPoints。

现在我问自己,如果我想在Qt&C ++中编写相同的应用程序(用于Linux),可以使用以前的项目。 到目前为止,我知道:

  • 视图必须完全重写,因为Qt使用“qml”而不是XAML
  • 此外,Qt不会像MVVM / C#/ XAML中那样使用“绑定”。 但是,在这里find了一些替代方法
  • 模型应该相对易于重用。

为了尽量减less“重写”代码部分,我还发现了一个C#到C ++包装,但迄今为止,只为方法不是整个类。 在这里看看你自己

有人有进一步的提宝,或者如果他们在某些方面是错误的,可以纠正我的言论?

感谢您的支持

从经验上讲,我最好的建议是避免尝试使用现有的代码,而是从C++/Qt开始编写一个新的应用程序。 这可能是诱人的,你已经有了一个应用程序,但试图移植它可能是一个比简单地改写它更加痛苦的过程,你也将错失机会从Qt强大的方面受益。 例如QML的声明性质没有明确的对应关系,你一定要充分利用它。

唯一的例外是,如果你(像你说的)有一个非常独立的库部分,你会很容易能够包装和重用。 但即便如此,在建造时也是一个负担。 我发现将整个代码库保存在C++/Qt5构建和部署非常简单和优雅。 QtqbsQtCreatorQt的工具对于跨平台非常有用。

除此之外,这里有一些评论:

  • 在链接中创建绑定的方式是正确的。 这就是你如何使用QML做到这一点。 但这不是唯一的方法。 有很多方法可以去做。 这里是替代的文档: http : //doc.qt.io/qt-5/qtqml-cppintegration-interactqmlfromcpp.html

  • C++方面,你将会处理一些被称为信号和插槽的东西,这里有很好的文档: http : //doc.qt.io/qt-5/signalsandslots.html 。

希望这是有帮助的!

基本上,老实说这是一个完整的重写。 Qt的原因是C ++,而Xamarin主要是C#。