Wie andere Poster erwähnt, besteht das Hauptproblem darin, sicherzustellen, dass Sie nie eine andere non-Qt nicht-plattformübergreifende API berühren. Oder wirklich eine andere nicht-Qt Crossplatform-API, wenn Sie Qt verwenden, müssen Sie sich dazu verpflichten, es ist ein umfassendes Framework und größtenteils mit Qt zu halten ist einfacher als zu etwas anderem gehen. Es gibt einige nette Vorteile, da die grundlegenden Grundelemente in Ihrem Programm auf die gleiche Weise überall funktionieren. (d. h. ein QString in Ihrem Netzwerkcode ist der gleiche wie ein QString in Ihrem Schnittstellencode.) Portabilität: Wenn Sie innerhalb der API bleiben, die Qt Ihnen bereitstellt, sollte es auf mehreren Plattformen funktionieren.
Es wird Bereiche geben, in denen Sie einige Qt-Funktionen aufrufen müssen, die bestimmte plattformübergreifende Optimierungen für einige Plattformen wichtiger als andere sind (z. B. Dock-Symbole) und Sie haben nicht sofort eine ausgefeilte Anwendung auf allen drei Plattformen . Aber im Allgemeinen sollten Sie einer Anwendung sehr nahe bleiben, die alle drei kompiliert und ausführt. (Versuchen Sie qmake oder ein ähnliches Build-System zu verwenden, da der Build-Prozess für Qt-Anwendungen je nach Plattform variiert. Verschiedene Flags usw.)
Es gibt einige seltsame Probleme, die auftreten, wenn Sie Qt mit anderen APIs mischen OpenGL, insbesondere die Art, wie Windows GL-Kontexte sperrt, unterscheidet sich von OS X und Linux. Wenn Sie also OpenGL mit mehreren Threads verwenden wollen, versuchen Sie regelmäßig auf den anderen Plattformen zu kompilieren, um sicherzustellen, dass nichts komplett zerstört wird. Dies wird auch schnell auf Bereiche hinweisen, in denen Sie versehentlich eine nicht plattformübergreifende System-API verwendet haben.
Ich habe Qt mit einem Team verwendet, um ein multi-threaded 3-D-Multiplayer-Netzwerkspiel in Echtzeit zu erstellen (lies: nicht-triviale Anwendung, die viele Bereiche von Qt voll ausnutzte) und wir waren einfach nur umgehauen durch die Fähigkeit von Qt, mehrere Plattformen zu unterstützen. (Wir haben OS X für Windows entwickelt und ich habe regelmäßig dafür gesorgt, dass es auch unter Linux lief.) Wir haben nur einige plattformspezifische Fehler gefunden, die fast ausschließlich auf die Verwendung von Nicht-Qt-APIs wie OpenGL zurückzuführen sind. (Welche sollte man etwas wirklich sagen, dass OpenGL eher einen Kampf war Cross-Plattform zu verwenden, als Qt war.)
Am Ende der Erfahrung, die wir, wie wenig Zeit zufrieden waren wir mit dem Umgang verbringen benötigte plattformspezifische Fehler. Es war überraschend, wie gut wir eine GUI-App für Windows erstellen konnten, da fast niemand vom Team tatsächlich eine primäre Entwicklungsplattform für das Projekt verwendet hat.
Aber testen Sie früh und oft. Ich denke nicht, dass Ihre Methode, eine ganze Anwendung zu schreiben und dann zu testen, eine gute Idee ist. Es ist möglich mit Qt, aber unwahrscheinlich, wenn Sie keine Erfahrung haben, portablen Code zu schreiben und/oder neu in Qt sind.
Das ist * absolut * nicht wahr. Qt ist viel mehr als eine plattformübergreifende GUI-Bibliothek und Sie müssen eindeutig mehr darüber recherchieren, bevor Sie Fragen dazu beantworten. Es bietet alles von plattformübergreifenden Dateisystemaufrufen über plattformübergreifende High-Level-Datenstrukturen bis hin zu plattformübergreifenden Netzwerken zu plattformübergreifenden, integrierbaren Browserkomponenten. –