ddobrev/QtSharp

Coverage

ShalokShalom opened this issue ยท 30 comments

Your README speaks less about the current state of the project.

On the homepage of MonoDevelop is QtSharp very underrepresented currently, without any screenshot and described as "Still in early development."

Is this still true?

@ShalokShalom Qt# is already in beta, you can find links to the releases and examples in the README. The only major missing piece is template classes and members which I have almost completed.

And so far as I get this .Net framework thing, is it possible to use C# to call QML in order to embed that combination into a F# project, yes?

@ShalokShalom Support for QML needs work on its own so that QML code can affect C# and vice versa (just as it is with C++ and QML). I hope to be able to complete this feature by the end of the year if we're talking about my free time.

I mean: Is it the possible to use Qt/QML with F#? Simply by calling it through C#?
.Net compiles all down to CIL?

If Qt# worked with QML, using it with F# would've been possible too, yes.

Cuz your documentation speaks about C# only. Might be nice to change this, if it applies to all languages of the .Net platform. ๐Ÿ‘

This project aims to create Mono/.NET libraries that wrap Qt (https://qt-project.org/) thus enabling its usage through C#

@ShalokShalom your suggestion makes perfect sense. Could you please send a pull request with the change?

Already done, thanks.

When C# code is compiled, it turns into Microsoft's intermediate language which can be used by any .NET language. So yes, you can use Qt# with F#.
You cannot use QML with F# yet for the same reason you cannot use it with C# - it's a feature not implemented yet.

Yeah, as I thought.

"For now, Qt MinGW for Windows has been the only tested version. Qt for OS X and Linux are planned."

Is this still the case?

The Atomic Game Engine is currently shifting its course, since the current previous maintainer is left. Qt/KDE is a possible solution for their UI, which makes QtSharp an essential player in this concept. ๐Ÿ˜„

For this, support on the major platforms is important.
Thanks a lot for your support. ๐Ÿ˜ƒ

@ShalokShalom I haven't stopped working, it's just there's quite some more to do. I need to finish the templates first and then I'll spare time on proper Unix support.

Thanks a lot.

Well, I just found out, that the imperative and object oriented code in F-Sharp looks and works exactly like in C# - this means, so far as I am concerned, that you could easily port your QtSharp onto F#, so we can use inline there?

C# produces regular .NET code which can be consumed by any .NET language, F# included.

Yes. the thing is, that you use C# to call the Qt functions, yes?

Do you mean it makes less difference, if the file is called .cs or .fs?

Do be honest: I have less idea, how a sophisticated app will look, is there much C# specific code too write, in order to call Qt?

When Qt# is compiled, you just add references to it from your F# code and work. That's it.

Ok, thanks. :)

If you need Qml integration, I am working on a project that does exactly this. I'd consider it usable for production.

https://github.com/pauldotknopf/net-core-qml

Oh, interesting...

Oh, no F# API, so I prefer Fable for QML development. Thanks anyway, maybe someone writes an API sometimes.

I'm not sure what Fable is. Care to explain quickly? And how does that relate to Qt?

Fable translates F# to JavaScript and QML is practically simply a superset of JS.
You can import JS files in your QML code

Sure, you can translate F# (or even C#) to JS, but you can't use .NET.

With the project I shared, you can use the full .NET runtime. I'm not sure you'd actually want to transpile Qml javascript, since they have unique (and useful) syntax for signals/etc.

With the project you shared, there is no F-Sharp implementation. I am a functional programmer by heart.

Why would you even want to use F# with Qt (which is inherently object oriented)?

Also, Qml.Net is a .NET library, which is reference-able from F# (.NET).

But again, you'd be working against the grain because Qt (and C++) is inherently/fundamentally object-oriented.

Having this "F# implementation" isn't practical, nor does it even make sense.

QML is declarative

To an extent it is, in that you can define the initial object hierarchy declaratively, but beyond that it is entirely object-oriented, not even close to functional.

Something tells me that you don't even know what you're looking for.

Good luck with that.

I can even draw QML