Frage C ++ Analog für WPF


Also habe ich in letzter Zeit etwas mit WPF herumgespielt, und ich muss sagen, dass mir die Idee wirklich gefällt. Ich liebe das Framework als Ganzes, von der GUI bis zur Installation.

So sehr ich auch gemanagtes Land mag, ich liebe meinen Geburtscode genauso. Ich frage mich also, welche Art von Bibliotheken für C ++ existieren, die die Essenz verschiedener Teile von WPF erfassen. Ich suche weder nach Interop-Lösungen, noch nach Managed C ++ - oder C ++ / CLI-Lösungen, sondern nach reinen C ++ - Lösungen.

Jetzt erwarte ich nicht, eine "Kopie" von WPF für C ++ zu finden - ich würde nicht erwarten, dass das existiert, noch würde ich es brauchen. Stattdessen würde ich erwarten, dass verschiedene Bibliotheken eine Teilmenge der gewünschten Konzepte erfassen können. Meine besonderen Interessen sind

  1. Hardware-beschleunigte Grafik für Widget-basierte GUI's (über DirectX oder OpenGL, vorzugsweise letzteres)

  2. Deklarative Sprache für GUI-Design (vorzugsweise ein XML-Dialekt)

  3. Datenbindung

  4. Auflösungsunabhängigkeit (weniger wichtig)

Um etwas über meine Argumentation zu sagen, würde ich gerne eine solche Bibliothek selbst implementieren, die ein spezifisches Modell einfängt, mit dem ich begonnen habe. Ich bin dabei, weitere Inspiration und hilfreiche Ressourcen zu finden, bevor ich mein Design sperre. Die Bibliothek soll plattformübergreifend sein, so dass Verweise auf plattformübergreifende Ideen großartig wären, aber nicht unbedingt notwendig, da ich normalerweise in der Lage bin, Dinge in plattformübergreifende Lösungen zu übersetzen.

Zu guter Letzt, obwohl ich eine C ++ - Bibliothek schreibe und C ++ - Ideen großartig wären, bin ich offen für Ideen aus jeder anderen Sprache.

Vielen Dank im Voraus für jede Hilfe.


17
2017-08-05 02:00


Ursprung


Antworten:


  1. So etwas gibt es nicht wirklich. Auf keinen Fall plattformübergreifend. Direct2D funktioniert einigermaßen gut, ist aber offensichtlich nur Windows. Und NVIDIA hat kürzlich diese "Pfad" -Erweiterung von OpenGL eingestellt, die in der Basisfunktionalität ähnlich ist, aber es ist nur NVIDIA (und nicht auf Mac OSX verfügbar). Kairo hat ein OpenGL-Backend, aber ich habe keine Ahnung, wie gut es ist. Es kann nicht so gut sein, wenn Mozilla Kairo zugunsten von D2D unter Windows ausrangiert.
  2. Viele GUI-Toolkits haben eine bestimmte Sprache, um eine GUI zu erstellen. Qt hat eine, die in C ++ vorkompiliert ist.
  3. Nicht, dass ich davon Wüste. Datenbindung erfordert eine Form der Reflektion (WPF-style Datenbindung tut), und C ++ hat keine native Unterstützung für die Reflexion. Daher müssten Sie eine Art von Reflektion implementieren, bevor Sie überhaupt mit der Datenbindung nach WPF beginnen können.
  4. Das kommt mit # 1. Mehr oder weniger, da jeder GPU-basierte Renderer in beliebigen Auflösungen arbeiten kann.

Ich liebe C ++, aber ehrlich gesagt, diese Art von Sache ist am besten für eine höhere Sprache implementiert. Der Mangel an sprachbasierter Reflektionsunterstützung wird die Implementierung von Datenbindung sehr erschweren. Während Sie einfach die Low-Level- "render stuff to area" und grundlegende Fenster / Event-Management in C ++ implementieren können, setzen Sie es dann zu einer Skriptsprache, wo Datenbindung und solche arbeiten. Auf diese Weise haben Sie die Geschwindigkeit des systemeigenen Codes, wo Sie sie benötigen, aber die Vielseitigkeit und Reflexion einer Skriptsprache für den Umgang mit der GUI und den zugehörigen Daten.


10
2017-08-05 02:08



Ich bin mehrere Jahre zu spät, aber für alle anderen, die diese Frage lesen: Sie suchen Qt Quick / QML:

http://qt-project.org/doc/qt-4.8/qml-intro.html

http://doc.qt.io/qt-5/qtqml-cppintegration-topic.html


3
2018-02-19 21:56