2017-01-31 2 views
2

Ich möchte Schriftarten zu meiner Anwendung mithilfe der QML-Komponente hinzufügen.Möglich, geladene QML-Komponenten dynamisch mit Component.createComponent() zu laden

Mein erster Gedanke war, eine Repeater zu verwenden, aber es unterstützt nur Item abgeleitete Delegaten, die FontLoader nicht ist.

Dann war mein nächster Gedanke dynamisch FontLoader QML-Komponenten mit der Component::createComponent(url)-Funktion zu erstellen, aber was url sollte ich hier verwenden? Ist es möglich, integrierte QML-Komponenten dynamisch zu erstellen, ohne die url für die qml-Datei in QT_INSTALL_DIR bereitzustellen?

Side Hinweise: Wenn möglich Ich weiß, es ist möglich, wenn ich FontLoader Unterklasse, aber ich möchte den zusätzlichen Code zu vermeiden.

Ich weiß auch, dass es möglich ist, die Component::createQmlObject() zu verwenden, um eine Komponente aus einer Zeichenfolge zu erstellen, aber das möchte ich wirklich nicht tun.

Antwort

3

Anstelle von Repeater können Sie eine Instantiator verwenden, mit der Sie Objekte dynamisch erstellen können, auch wenn sie nicht Items s sind.

Wenn Sie noch wollte es unbedingt tun, müssen Sie Component verwenden:

Component { 
    id: fontLoaderComponent 
    FontLoader {} 
} 
//... 
fontLoaderComponent.createObject(parent, {name : "Courier"}); //use it like this to create a new FontLoader 
+0

ich keine Kenntnis von der 'Instantiator' Komponente war. Es hat super funktioniert! – Phat

Verwandte Themen