
Visualisierung von Gesundheitsdaten
Da die Gesundheitsbranche immer mehr Daten generiert, liegt die Herausforderung nicht mehr nur in der Datensammlung, sondern in der Interpretation. […]
Ist Ihnen schon einmal aufgefallen, dass die meisten professionellen Softwareprogramme und Spiele für alle gängigen Plattformen verfügbar sind? Das ist normal, denn wenn Sie eine Anwendung erstellen, möchten Sie, dass sie so vielen Kunden wie möglich zur Verfügung steht. Ein breiteres Publikum bedeutet mehr Interesse an Ihrem Produkt, aber auch mehr potenzielle Gewinne, die Sie daraus erzielen können. Es lohnt sich also, Ihre App auf mehreren, unterschiedlichen Plattformen zu veröffentlichen, aber wie geht das?
Nun, es gibt zwei Möglichkeiten. Die erste basiert auf nativer App-Entwicklung. Kurz gesagt beinhaltet sie die Verwendung von Sprachen und Toolkits, die für eine bestimmte Plattform bestimmt sind – für Android ist es beispielsweise Java mit Android Studio und für iOS Swift zusammen mit XCode IDE. Der native Ansatz hat seine Vorteile, aber auch seine Nachteile. Der wichtigste Vorteil ist zweifellos der mögliche leistungsoptimierte Code in einer nativen Sprache, der am schnellsten ausgeführt wird und zusätzlich Zugriff auf die integrierte Funktionalität des Systems bietet. Der Nachteil ist natürlich die Schwierigkeit, der Zeitaufwand und der Preis der Implementierung – wenn Sie eine Anwendung für drei verschiedene Systeme veröffentlichen möchten, müssen Sie drei unabhängige Programmierteams einstellen. Solche Teams würden getrennt arbeiten, was einen erheblichen Einfluss auf den Veröffentlichungstermin der Anwendung hätte. Darüber hinaus muss diese Anwendung auch gewartet werden, was mit der ständigen Bezahlung dieser Teams verbunden ist. Wenn Sie sich fragen, wie Sie die Projektkosten senken können, oder erfahren möchten, was ein Technologie-Stack ist, lesen Sie diesen Beitrag.
Wie können Sie also hohe Kosten bei geringem Leistungsverlust vermeiden? Verwenden Sie ein plattformübergreifendes Framework. Mit diesen Arten von Frameworks können Sie Software für mehrere, unterschiedliche Plattformen mit demselben Quellcode entwickeln – Sie müssen Ihre Anwendung nicht neu schreiben, wenn Sie neue Funktionen oder Unterstützung für eine neue Zielplattform hinzufügen müssen. Natürlich bieten plattformübergreifende Ansätze keinen so einfachen Zugriff auf alle nativen Komponenten, aber sie bieten stattdessen eine schnellere, kostengünstigere und effizientere Softwareproduktion.
Welches plattformübergreifende Framework ist also das beste? Nun, es hängt davon ab, für welche Art von Zielplattformen Sie sich interessieren – es gibt viele verschiedene Frameworks und es ist unmöglich, sie alle in einem Beitrag aufzulisten. Daher konzentrieren wir uns heute auf 4 der besten plattformübergreifenden Desktop-Frameworks und andere Plattformen werden in einem separaten Beitrag beschrieben.
Beginnen wir unseren Test mit JavaFX, einem plattformübergreifenden Framework, das auf reinem Java basiert. Ursprünglich war dieses Framework in den JDK-Versionen 8-10 enthalten und war die wichtigste GUI-Umgebung für Java und ersetzte das zuvor verwendete Swing. Ab JDK 11 war es jedoch nur noch als externes Tool verfügbar, das im Rahmen des OpenJFX-Projekts in OpenJDK enthalten war.
JavaFX ermöglicht die Softwareentwicklung für Plattformen wie Windows, Linux, Mac, Android, iOS und Webbrowser. Ursprünglich wurden auch eingebettete Systeme unterstützt, diese Unterstützung wurde jedoch mit JDK 8u33 für ARM eingestellt. JavaFX-Anwendungen können sowohl mit reinem Java als auch mit verfügbaren Bibliotheken entwickelt werden – wir sprechen auch vom beliebten Maven-Paketmanager, der in JavaFX integriert werden kann. JavaFX wird natürlich mit einer Reihe vorgefertigter Bibliotheken geliefert, sodass der Entwickler das Rad nicht neu erfinden muss, sondern die vorbereiteten Lösungen verwenden kann.
JavaFX verwendet FXML-Dateien (auf XML basierende Sprache), um das Erscheinungsbild von Fenstern zu erstellen. Jeder Tag stellt ein separates Objekt in der Anwendung dar, dem wir entsprechende Eigenschaften zuweisen, andere Komponenten positionieren und verschachteln können. Die Basiskomponente ist ein einzelner Container, in den wir andere Objekte einfügen. Eine solche Komponente muss dann nur noch im Java-Code geladen werden. Denken Sie daran, dass der verwendete Typ mit dem in der Datei deklarierten übereinstimmen sollte. Wir können auch eine CSS-Datei verwenden, um ausgewählte Komponenten zu gestalten.
Um die Arbeit mit FXML-Dateien zu erleichtern, gibt es ein Tool namens Scene Builder. Es ist ein Editor, mit dem Sie das Erscheinungsbild Ihrer Anwendung ganz einfach erstellen können. Um eine Komponente hinzuzufügen, ziehen Sie sie einfach per Drag & Drop auf den Arbeitsbereich und passen Sie dann ihre Eigenschaften im Seitenfenster an. Wenn wir AnchorPane als Basiskomponente gewählt haben, ist die Positionierung der Komponenten noch einfacher, da sie an einem unsichtbaren Raster „haften“, das unsere Anwendung in gleiche Teile unterteilt.
Scene Builder in Aktion
Leider hat JavaFX auch seine Nachteile. Wie die meisten von Ihnen wahrscheinlich wissen, werden in Java erstellte Programme in einer virtuellen Maschine ausgeführt, was zu einem höheren RAM-Verbrauch und einer erheblichen CPU-Auslastung führt. Das Ergebnis ist, dass in JavaFX erstellte Programme auf einigen schwächeren Geräten merklich langsamer laufen können. Darüber hinaus werden sowohl JavaFX als auch JavaSwing immer weniger verwendet – diese Lösungen werden nach und nach durch Technologien wie Qt, JSF, Flutter oder Electron ersetzt. Darüber hinaus sind benutzerdefinierte Zeichnungen und Animationen nicht so einfach zu erstellen – zumindest nicht so einfach wie in QML.
Nachfolgend sehen Sie ein Beispiel für ein Anwendungsdesign, das wir mit Scene Builder erstellt haben (Bildschirm oben):
<? xml version="1.0" encoding="UTF-8"?> <? import javafx.scene.control.Label?> <? import javafx.scene.image.Image?> <? import javafx.scene.image.ImageView?> <? import javafx.scene.layout.AnchorPane?> <? import javafx.scene.layout.Pane?> < AnchorPane accessibleText="″ xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/17"> < children> < Pane layoutX="-7.0" prefHeight="768.0" prefWidth="660.0"> < children> < Label layoutX="300.0" layoutY="283.0" text="Hello world" textAlignment="CENTER" /> < ImageView fitHeight="150.0" fitWidth="200.0" layoutX="255.0" layoutY="309.0" pickOnBounds="true" preserveRatio="true"> < image>. < Image url="@ss.png" /> </image>. </ImageView>. </children>. </Pane>. </children>. </AnchorPane>.
So sieht das Programm nach dem Start aus:
Scene Builder-Tool
Möglichkeit, vorhandene Java-Bibliotheken zu verwenden
Abnehmende Popularität und damit Community-Unterstützung
Geringe Leistung
Schwieriges benutzerdefiniertes Zeichnen und Animationen
Qt ist ein Framework, auf das wir uns spezialisiert haben, aber auch ein Framework, dem viele globale Unternehmen vertrauen. Dieses Framework hatte seine Anfänge im Jahr 1995 und wurde seitdem ständig weiterentwickelt. Qt wurde im Kern in reiner C++-Sprache erstellt, wodurch es eine native Leistung bietet. Ursprünglich war Qt ein Framework, das vollständig auf Desktop-Plattformen ausgerichtet war, was zu einer so tiefgreifenden Entwicklung des dedizierten Desktop-Moduls Qt Widgets führte. Mit der Veröffentlichung der 5. Version von Qt wurde die Unterstützung für die meisten mobilen Plattformen sowie eingebettete Systeme eingeführt.
Die Entwicklung von Desktop-Anwendungen in Qt erfordert Kenntnisse in C++ (oder Python, wenn Sie PyQt verwenden) – tatsächlich reichen Grundkenntnisse dieser Programmiersprache hier aus, da Qt mit vielen benutzerfreundlichen Modulen ausgestattet ist, die in der Dokumentation zusätzlich ausführlich und verständlich beschrieben werden. Ein bemerkenswertes Modul ist Qt Quick, mit dem Sie Anwendungen mit der deklarativen Sprache QML erstellen können. Es ist ein einfaches Tool, das wie eine Kombination aus JSON, CSS und JavaScript aussieht. Die letzte der genannten Sprachen ist Teil von QML, sodass wir zuvor vorbereitete JS-Skripte direkt verwenden können. Es ist jedoch allgemein anerkannt, dass die Anwendungslogik vollständig in C++ implementiert ist und QML ihr Erscheinungsbild handhabt. Diese Trennung von Logik und Erscheinungsbild ermöglicht es uns, auf nicht native Weise eine native Leistung und eine sauberere Softwarearchitektur zu erreichen.
Qt wurde als Technologie von vielen globalen Marken gewählt. AMD, Intel, Mercedes-Benz, Bosch, LG, Panasonic, Ubuntu – wir könnten sie endlos aufzählen. Das ist nicht überraschend, denn Qt ist eine stabile, ausgereifte Lösung. Die Aufmerksamkeit dieser Unternehmen wird sicherlich von den oben erwähnten Qt Widgets erregt, einem der am weitesten entwickelten und fortschrittlichsten Module, mit dem Sie mit wenig Aufwand eine effiziente Desktop-Anwendung erstellen können, was Qt zu einem der besten plattformübergreifenden Desktop-Frameworks macht. Erwähnenswert ist auch, dass das Qt-Framework neben den zuvor erwähnten Modulen Qt Widgets und Qt Quick auch viele andere Module enthält, dank denen Sie problemlos native Funktionen aufrufen und dabei 100 % des Potenzials des Zielgeräts nutzen können. Darüber hinaus enthält das Qt-Framework das Tool Qt Designer, mit dem Sie das Erscheinungsbild Ihrer Anwendung problemlos erstellen können, ohne eine Programmiersprache zu kennen – ähnlich wie beim zuvor erwähnten Scene Builder.
Natürlich ist Qt wie jedes andere Framework kein Allheilmittel für jedes Projekt. Qt ist kein so weit verbreitetes Framework, was es schwierig machen kann, einen Spezialisten für diese Technologie zu finden. Darüber hinaus spiegelt sich seine geringe Popularität auch in der weniger großen Entwickler-Community des Frameworks wider.
Nachfolgend finden Sie den Code eines einfachen Programms, das in QML erstellt wurde:
importing QtQuick 2.12 import QtQuick.Window 2.0 Window { id: root width: 640 height: 640 visible: true title: "Example window" Text { id: text anchors { bottom: image.top bottomMargin: 25 horizontalCenter: image.horizontalCenter } text: "Hello world!" } Image { id: image width: 150 height: 150 anchors.centerIn: parent fillMode: Image.PreserveAspectFit source: "qrc:/assets/image.png" } }
So sieht unser Beispielprogramm nach der Ausführung aus:
Lang entwickeltes Desktop-Modul
Unterstützt Desktop-Plattformen (einschließlich Windows, Linux und Mac), mobile Plattformen, Webbrowser und eingebettete Systeme
Hohe Leistung
Qt Designer-Tool
Schnelle und einfache Implementierung mit QML
Einfacher Zugriff auf eine große Auswahl nativer, betriebssystemabhängiger Bibliotheken, die normalerweise in den Programmiersprachen C oder Objective-C geschrieben sind
Qt für Python
Durchschnittliche Beliebtheit
Kleine Entwickler-Community
Das nächste plattformübergreifende Desktop-Framework, das wir heute besprechen werden, ist Electron. Electron ist ein Open-Source-Framework, das von GitHub erstellt und entwickelt wurde. Es wurde erstmals 2013 veröffentlicht, ist also ein relativ junges Framework. Electron ist als Node.js-Paket verfügbar und kann einfach mit dem npm-Manager heruntergeladen werden.
Mit Electron können Sie voll funktionsfähige Desktop-Anwendungen mit Technologien erstellen, die normalerweise in einer Webumgebung verwendet werden, wie HTML, JavaScript und CSS. Es verwendet eine Kombination aus der Chromium-Rendering-Engine und der Node.js-Umgebung, um das Erscheinungsbild der Anwendung zu visualisieren. Erwähnenswert ist hier, dass Electron selbst in C++ und Objective-C erstellt wurde und alle seine integrierten Methoden und Funktionen in der von uns erstellten Anwendung über JavaScript verfügbar sind.
Visual Studio Code als Web-App vs. Visual Studio Code als Electron-Desktop-App
Eine in Electron erstellte Anwendung enthält 3 Hauptelemente: index.html, main.js und package.json. Die erste Datei enthält die Implementierung des Anwendungserscheinungsbildes, das wir mit HTML erstellen. Hier definieren und positionieren wir die Anwendungselemente und geben ihnen die entsprechenden Eigenschaften – ähnlich wie FXML in JavaFX. Die Datei main.js enthält die Implementierung der Anwendungslogik – hier sollten die komplizierteren Skripte unseres Programms platziert werden. Die letzte dieser drei Dateien enthält Metadaten zu unserer Anwendung, die von Node.js als Paketinformationen verwendet werden. In diese Datei müssen wir Informationen zu unserer Anwendung aufnehmen, wie z. B. den Titel, die Version sowie einen Pfad zur Datei, die die Logikimplementierung enthält (standardmäßig main.js).
Viele bekannte Anwendungen basieren auf Electron, wie z. B. Discord, Skype, Visual Studio Code, WordPress Desktop, Github Desktop, Microsoft Teams und viele andere. Sie werden feststellen, dass jede von ihnen ihr Gegenstück auf der Webplattform hat. Wenn Sie ein fertiges Webdesign haben, können Sie es mit Electron ganz einfach auf eine Desktopanwendung portieren. Natürlich funktioniert es auch umgekehrt – indem wir eine Basisanwendung in Electron erstellen, können wir später deren Quellcode verwenden, um eine Webanwendung zu erstellen.
Electron hat jedoch seine eigenen Nachteile. Erstens verwendet es wie JavaFX sehr viele Systemressourcen und bietet eine viel schlechtere Leistung als native Apps. Electron ist auch direkt auf Desktop-Plattformen ausgerichtet – es ist unmöglich, eine Anwendung direkt für Android, iOS oder eingebettete Systeme zu erstellen. Darüber hinaus fehlt ein dedizierter Designer für die von Ihnen erstellten Apps. Sie können natürlich Lösungen wie WYSIWYG verwenden, aber solche Lösungen nutzen nicht die integrierten Funktionen, die Electron bietet.
Nachfolgend sehen Sie den HTML-Code einer in Electron erstellten Beispielanwendung. Die Datei main.js ist unverändert geblieben:
<! DOCTYPE html> < html>. < head> < meta charset="UTF-8"> <!-- https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP --> < meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'"> < link href="./styles.css" rel="stylesheet"> < title> Example App</title>. </head> < body> < div style="text-align: center; margin-top: 25%;"> < h1> Hello World! </h1> < br> < img src="ss.png" alt="electron"> </div>. <!-- You can also require other files to run in this process --> < script src="./renderer.js"></script> </body> </html>.
So sieht unsere Anwendung nach dem Start aus:
Kann von einer bestehenden Website portiert werden
Kleine Paketgröße
Einfach zu erlernende und weit verbreitete Entwicklungstechnologie dank Webnutzung
Geringe Leistung
Kein dediziertes Designer-Tool
Schwieriger Zugriff auf native Funktionen
Flutter ist ein weiteres plattformübergreifendes Desktop-Framework für die Softwareentwicklung. Es ist ein Open-Source-Projekt, das im Mai 2017 von Google erstellt wurde. Flutter war ursprünglich ausschließlich auf mobile Plattformen ausgerichtet. Die Unterstützung für Desktop-Plattformen wurde erst 2020 eingeführt.
Das Programmieren von Anwendungen in Flutter erfordert Kenntnisse in Dart, der proprietären Programmiersprache von Google. Es ist eine universelle, stark typisierte objektorientierte Sprache. Sie kann dem unerfahrenen Programmierer etwas schwierig erscheinen, daher ist es wichtig, sie zu lernen, bevor Sie mit der Entwicklung von Anwendungen in Flutter beginnen. Die Flutter-Programmierung basiert hauptsächlich auf der Verwendung von Komponenten, die als Widgets bezeichnet werden. Widgets können entweder zustandslos sein, was bedeutet, dass sie zur Laufzeit nicht geändert werden können, oder sie können zustandsbehaftet sein, was bedeutet, dass wir ihr Erscheinungsbild zur Laufzeit ändern können. Es ist jedoch wichtig zu bedenken, dass eine solche Änderung das Element komplett von Grund auf neu rendert – dies kann Auswirkungen auf die Leistung haben.
Ähnlich wie Qt ermöglicht uns Flutter, unseren Code in die native Funktionalität des Zielsystems zu integrieren, wie Bluetooth, GPS usw. Anders als bei Qt müssen Sie dazu jedoch spezielle, von der Community erstellte Bibliotheken verwenden – im Qt-Framework sind die meisten davon bereits integriert.
Um ein Projekt in Flutter zu erstellen, führen Sie die Datei flutter_console.bat aus. Das Programm führt Sie dann durch den Prozess der Projekterstellung. Die Implementierung des Erscheinungsbilds und der Logik ist in der Datei main.dart enthalten. Nachdem wir die Anwendung erstellt haben, können wir sie sowohl für Web- als auch für mobile Plattformen erstellen. Bei Desktop-Plattformen ist die Sache etwas komplizierter, denn hier müssen wir zuerst die entsprechenden Pakete herunterladen und das Projekt auch richtig konfigurieren, damit es für die Veröffentlichung auf Desktops bereit ist.
Einer der größten Nachteile von Flutter ist die recht große Größe des endgültigen Pakets. Eine in Flutter erstellte Anwendung, die beispielsweise 2 MB belegt, würde bei anderen Technologien 200–400 KB Speicherplatz beanspruchen. Ein weiteres Problem ist das junge Design dieses Frameworks und die geringe Anzahl integrierter Bibliotheken. Da Flutter ein Framework von Google ist, wird außerdem mehr Wert auf Verbesserungen für Android als für iOS gelegt.
Nachfolgend finden Sie Beispielcode für eine in Flutter erstellte Anwendung:
import' package:flutter/material.dart'; void main() { runApp(const MyApp()); } class MyApp extends StatelessWidget { const MyApp({Key? key}) : super(key: key); @override Widget build(BuildContext context) { Map< int, Color> color = { 50 :Color. fromRGBO(29,202 , 155, . 1), 100 :Color. fromRGBO(29,202 , 155, . 2), 200 :Color. fromRGBO(29,202 , 155, . 3), 300 :Color. fromRGBO(29,202 , 155, . 4), 400 :Color. fromRGBO(29,202 , 155, . 5), 500 :Color. fromRGBO(29,202 , 155, . 6), 600 :Color. fromRGBO(29,202 , 155, . 7), 700 :Color. fromRGBO(29,202 , 155, . 8), 800 :Color. fromRGBO(29,202 , 155, . 9), 900 :Color. fromRGBO(29,202 , 155, 1), }; return MaterialApp( title: 'Scythe Demo', debugShowCheckedModeBanner: false, theme: ThemeData( primarySwatch: MaterialColor(0xff1dca9b, color) ), home: const HomePageClass(displayText: 'Hello world'), ); } } class HomePageClass extends StatefulWidget { const HomePageClass({Key? key, required this.displayText}) : super(key: key); final String displayText; @override State< HomePageClass> createState() => _HomePageClassState(); } class _HomePageClassState extends State< HomePageClass> { @override Widget build(BuildContext context) { return Scaffold( body: Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: < Widget>[ Text(widget.displayText), Image. asset('assets/images/ss.png'), ], ), ) ); } }
So sieht es nach dem Start aus:
Hohe Leistung
Fähigkeit, Anwendungen für Desktop-, Mobil- und Webplattformen zu erstellen
Wachsende Popularität
Kein grafisches Tool zum Erstellen von Benutzeroberflächen
Nur wenige Module in den Standard-Flutter-Bibliotheken
Unterstützung für Desktops wurde erst vor relativ kurzer Zeit hinzugefügt (2019)
Große Dateigröße
Mit dieser Technologie beenden wir unseren heutigen Testbericht zu 4 der besten plattformübergreifenden Desktop-Frameworks. Die Auswahl eines bestimmten Frameworks aus den angebotenen kann schwierig sein, und wie Sie bemerkt haben, hat jedes Framework seine eigenen Vor- und Nachteile. Nun, die Wahl hängt hauptsächlich von Ihren Erwartungen und Zielen ab. Wir haben für Sie eine Vergleichstabelle sowie Beispielfälle und die am besten geeigneten Frameworks vorbereitet:
Wenn Sie möchten, dass Ihre Anwendung gleichzeitig in Webbrowsern und auf PCs zugänglich ist, ist Electron die beste Wahl. Sie können Ihre Anwendung in reinem HTML, CSS und JavaScript erstellen, sodass Sie den erstellten Code später problemlos für Ihre Website wiederverwenden können. Dies funktioniert in beide Richtungen – wenn Sie den Code für die Website bereits haben, müssen Sie nur einige Änderungen am Code vornehmen und können ihn in eine Desktop-Anwendung portieren.
Wenn Sie planen, eine App zu veröffentlichen, die für Desktops und Mobilgeräte verfügbar sein wird, sollten Sie Flutter in Betracht ziehen. Obwohl die Desktop-Unterstützung noch recht jung ist, ist es relativ einfach, damit mobile Apps zu veröffentlichen. Beim Erstellen von Software können Sie auch die Unterstützung der umfangreichen Flutter-Community nutzen.
Eine Alternative zu Flutter ist die Verwendung von JavaFX, bei dem es etwas einfacher ist, eine Desktop-Anwendung zu erstellen, beispielsweise mit Scene Builder. Darüber hinaus können Sie in JavaFX viele der verfügbaren Drittanbieterlösungen frei verwenden, die bei Flutter leider rar sind. Man sollte jedoch bedenken, dass JavaFX-Programmierung nicht so effektiv ist. Außerdem kann sich die Erstellung dynamischer, fortschrittlicher Benutzeroberflächen als schwierig erweisen. Obwohl JavaFX bisher beliebt war, empfehlen wir nicht, es für zukünftige Projekte zu verwenden, da diese Technologie eher der Vergangenheit angehört.
Wenn Sie möchten, dass Ihre Anwendung so effizient wie möglich ist und auch für Desktops verfügbar ist und problemlos Unterstützung für andere Plattformen wie Mobilgeräte hinzugefügt werden kann, wählen Sie Qt. Mit dem Qt Quick-Modul kann Ihr Team schnell eine erstaunliche Benutzeroberfläche erstellen. In Kombination mit der in C++ erstellten Logik wird sichergestellt, dass die erstellte Software blitzschnell ausgeführt wird. Qt ermöglicht es Ihnen auch, nativen Code in den Code der Anwendung einzufügen, sodass Sie die Computerfunktionen des Kunden voll ausnutzen können. Erwähnenswert ist hier auch, dass Implementierungen dieser Art der Einfügung häufig bereits als Open-Source-Projekte im Internet verfügbar sind. Möglicherweise stellen Sie auch fest, dass Sie diese Art der Einfügung überhaupt nicht benötigen – es gibt viele gebrauchsfertige Module in Qt, mit denen Sie problemlos beliebte Lösungen wie Bluetooth, GPS, Kameras usw. verwenden können.
Das wäre es. Wenn Sie an einem plattformübergreifenden Desktop-Anwendungsentwicklungsdienst interessiert sind, sehen Sie sich an, was wir für Sie tun können, oder buchen Sie gleich eine kostenlose Beratung.
Das wäre es. Wenn Sie an einem plattformübergreifenden Desktop-Anwendungsentwicklungsdienst interessiert sind, sehen Sie sich an, was wir für Sie tun können oder buchen Sie sofort eine kostenlose Beratung.
Kommen wir zur Sache: Es ist eine Herausforderung, Top-Qt-QML-Entwickler zu finden. Helfen Sie sich selbst und starten Sie die Zusammenarbeit mit Scythe Studio – echten Experten im Qt C++ Framework.
Entdecken Sie unsere Fähigkeiten!Da die Gesundheitsbranche immer mehr Daten generiert, liegt die Herausforderung nicht mehr nur in der Datensammlung, sondern in der Interpretation. […]
Produkte aus der STM32-Familie sind seit langer Zeit ein beliebtes Ziel für eingebettete Qt-Anwendungen. Eine der beliebtesten Optionen war über […]
Ich begrüße Sie zu einem weiteren Blogbeitrag. Der letzte Beitrag behandelte eine Form der Kommunikation zwischen Geräten mit Qt Bluetooth […]