Unter der Sonne gibt es nichts Perfektes. Qt ist keine Ausnahme und hat Einschränkungen: Wir können keine Pixmaps in einem anderen Thread als der GUI verwenden, wir können QImage nicht mit einem 16-Bit-pro-Kanal-Bildformat usw. verwenden.
Welche Situationen haben Sie gezwungen, das Design aufgrund der Einschränkungen von Qt zu verderben?
Was sind die am meisten gehassten Macken?
Welche Designentscheidungen sollte man vermeiden, wenn man Qt in seinen Projekten verwendet?
qt
design-decisions
Reben
quelle
quelle
the
ist hier gebundencorners
, nichtQt
, aber es ist nur mein intuitives Gefühl, da ich Russe bin :)Antworten:
Ironischerweise würde ich sagen, dass Qts Kraft auch einer der Nachteile ist. Es gibt so viele leistungsstarke Konstruktionen und Erweiterungen, dass Code, den Sie in Qt schreiben, auf "Qt-Weise" leicht stark verankert wird. Der Versuch, Funktionen in eine andere Sprache zu extrahieren, bedeutet nicht nur ein erneutes Schreiben, Sie müssen auch viele Qt-spezifische Technologien kennen.
Die Breite von Qt bedeutet, dass die Einstellung von Programmierern entweder die Verpflichtung gegenüber jemandem mit Qt-Erfahrung oder die Schulung für dieses Fachwissen bedeutet. Es ist schwieriger als Vanilla C ++, einen Auftragnehmer auf den neuesten Stand zu bringen.
Als Qt von 3.x auf 4.x geändert wurde, benötigte unser Team fast 9 Monate, um den Port auszuführen. Während dieser Zeit wurden nur wenige neue Funktionen hinzugefügt. Sie hoffen, diese großen Upgrade-Kosten für den Rest der Zeit durch eine höhere Entwicklungseffizienz auszugleichen. (Beachten Sie, ich habe die Vorteile von Qt weggelassen, von denen es auch viele gibt)
quelle
Qt verwendet nicht die Standard-C ++ - Bibliothek , verfügt jedoch über einen eigenen QString, QVector, QMap, ...
Dies bedeutet, dass Sie eine wichtige Entwurfsentscheidung treffen müssen: Welche Teile der Anwendung verwenden QString und welche Teile verwenden std :: string?
Wenn Sie in einigen Teilen std :: string und in anderen Teilen QString verwenden, müssen Sie in den Grenzen zwischen QString und std :: string konvertieren.
Um diesen Aufwand zu vermeiden, können Sie QString in Ihrer gesamten Anwendung verwenden. Dies macht es jedoch viel schwieriger, Bibliotheken von Drittanbietern zu verwenden, die nicht auf Qt basieren, z. B. Boost.
(Beachten Sie, dass dies auch für std :: map vs QMap, std :: vector vs QVector usw. gilt.)
Die Entscheidung, welche Teile die Qt-Typen verwenden und welche Teile die STL verwenden, ist eine wichtige Entwurfsentscheidung mit erheblichen Auswirkungen. Und nur, weil Qt sich weigert, die Standard-C ++ - Bibliothek zu verwenden.
IMHO, diese Entscheidung könnte je nach Projekt in beide Richtungen gehen. Daher kann ich Ihre Frage nicht beantworten, welche Sie vermeiden sollten.
quelle
Dies beantwortet die Frage nicht direkt, aber ich denke, es ist erwähnenswert: Der vielleicht "gefährlichste" Aspekt von Qt ist, dass Nokia mit MSoft ins Bett gegangen ist ...
quelle
Kürzlich habe ich herausgefunden, dass ein QChar trotz seines Namens nicht einem Zeichen entspricht, sondern einer UTF-16-Codeeinheit. Wenn Sie also einen beliebigen Unicode-Text zeichenweise scannen möchten, müssen Sie Algorithmen hinzufügen, um mit hohen und niedrigen Ersatzzeichen umzugehen und Zeichen und dergleichen zu kombinieren.
quelle