plattformunabhängige GUI

7

Ich möchte eine GUI für meine Anwendung erstellen. Es sollte auf mehreren Plattformen funktionieren. Ich möchte, dass der Großteil des Codes für das gesamte Betriebssystem (UNIX, Windows, MAC) übertragbar ist.

GTK und GLib sehen wie eine gute Lösung aus. Ich möchte auch native APIs verwenden

Wie geht das alles?

    
user739711 19.05.2011, 07:35
quelle

6 Antworten

11

Qt kann dafür gut sein.

    
Juraj Blaho 19.05.2011, 07:38
quelle
5

Ich mag WxWidgets, wirklich einfach zu bedienen. Es verfügt über Bindungen für mehrere Sprachen und Sie können die C ++ - Implementierung problemlos mit der Win32-API (C-Code) kombinieren.

Ссылка

Eine leichtere Alternative ist FLTK

Ссылка

    
danron 19.05.2011 07:37
quelle
3

Sie müssen eine PAL ( Platform-Abstraktionsschicht ) implementieren.
Diese Schicht sollte eine Abstraktion über die tatsächlichen Plattformaufrufe bereitstellen, indem Schnittstellen bereitgestellt werden, die nicht plattformabhängig sind. Sobald Sie zu einer anderen Plattform wechseln, muss nur das PAL für diese spezielle Plattform implementiert werden und der Rest der Anwendung kann unverändert verwendet werden.

    
Alok Save 19.05.2011 07:38
quelle
1

Qt scheint eine Option zu sein. Aber wenn Sie Windows-APIs verwenden möchten, ist es nicht tragbar. Qt in Windows wird Sachen wie CreateWindow usw. benutzen, aber Sie werden nicht. Z.B. Der Disassembler IDA wurde kürzlich in Qt neu geschrieben und ist nun plattformübergreifend.

    
Henno Brandsma 19.05.2011 07:38
quelle
1

Ich denke, es lohnt sich, die native Fensterebene auf jeder Zielplattform zu erlernen.

Als solche:

  • Cocoa Cocoa ist die native Mac OS X-Fensterebene. Es ist eine Objective-C-API, aber es ist nicht schwer zu lernen, und es ist einfach mit C oder C ++ zu interopieren.
  • Win32-API
    Die Windows-API ist eine C-API, die den nativen Widget-Satz von Windows implementiert.
  • GTK +
    Die Unix / Linux-Welt ist komplizierter, da es möglich ist, dass Apps gegen völlig unterschiedliche Widget-Set-Implementierungen geschrieben werden. Sie müssen das Widget-Set auswählen, das vom Standard-Desktop Ihrer Zielumgebung verwendet wird: Wenn Sie auf Ubuntu abzielen, ist GTK + (2) die API für den Zugriff auf das native Widget-Set von Unity Desktops.

Ich persönlich mag QT nicht, da sie ihren eigenen Meta-Compiler erfunden haben, was QT-Code (ironisch) schwierig macht, in Nicht-QT-Umgebungen zu portieren. QT bietet jedoch eine Abstraktion des nativen Widget-Sets, wenn möglich.

wxWidgets ist eine praktische Wrapper-API, die Win32Api, Cocoa api und GTK + auf den entsprechenden Plattformen bereits umschließt. Ich habe es jedoch vermieden, da Wx auf Microsoft MFC basiert - ein etwas veraltetes Document / View C ++ - Framework und ich wollte die zugrunde liegenden Plattformen verstehen.

  • Bearbeitet mit einigen Korrekturen mit QT.
Chris Becke 19.05.2011 08:22
quelle
0

Bitte werfen Sie einen Blick auf Qt Framework. Dies wird Ihnen helfen, plattformübergreifende GUI-Anwendungen zu erstellen. Sie müssten sich auf die API Offered by Qt für native Plattform-Aufgaben verlassen, wenn Sie die nativen APIs verwenden möchten, ist Ihr Code nicht übertragbar.

    
asami 19.05.2011 07:38
quelle

Tags und Links