2016-11-08 4 views
1

Für viele Anwendungen, insbesondere auf leistungsschwachen Maschinen, ist es vorteilhaft, integrierte Komponenten wie Loader und Image einzurichten, um ihre Ressourcen asynchron zu laden. Dazu gibt es zwei offensichtliche Möglichkeiten:Ändern von Standardwerten für Eigenschaften (z. B. asynchron)

  1. die erforderliche Eigenschaft der integrierte Komponente gesetzt, dh asynchronous: true
  2. Erstellen Sie eine benutzerdefinierte Komponente AsyncXXX mit im Wesentlichen folgendem Inhalt:

AsyncXXX. qml:

XXX { 
    asynchronous: true 
} 

wobei XXX entweder Loader oder Image ist.

Ich frage mich, warum sie standardmäßig nicht auf asynchronen Modus eingestellt sind.

Am wichtigsten ist, gibt es eine Möglichkeit - eine Umgebungsvariable, eine globale Einstellung - das Standardverhalten von integrierten Komponenten auf die asynchrone zu ändern, wodurch benutzerdefinierte Komponenten vermieden werden?

Antwort

3

könnte man leicht ASLoader und ASImage QML Typen machen, die nur Loader und Image mit asynchronous: true sind und diejenigen in Ihrem Projekt verwenden. Dies wird Sie davor bewahren, dass Sie es überall ändern müssen, und wenn Sie das ändern möchten, gehen Sie einfach und ändern Sie es im Prototyp.

Ich frage mich, warum sie standardmäßig nicht auf asynchronen Modus eingestellt sind.

Asynchron ist immer komplizierter und mit mehr Overhead, also macht es Sinn, wenn es nicht das Standardverhalten ist. Von dem QML-Code, den ich gesehen habe, wird synchrone viel häufiger verwendet als asynchron, so dass es sehr wenig Sinn macht, einen asynchronen Standard zu verwenden.

EDIT:

Sie auch zwischen synchronem und asynchronen Schaltverhalten während der Laufzeit erreichen können, wenn man den Prototyp eine projektweiten Eigenschaft binden, zum Beispiel einer Kontexteigenschaft oder eine Eigenschaft in main.qml.

Verwandte Themen