9
votes

Gradients QML avec une orientation

gradient QML ne permet que de haut en bas dans un rectangle. Documentation dit que Il faut faire par la combinaison de rotation et de coupure.

Je viens de commencer à apprendre à apprendre qml (et peu d'expérience avec HTML / CSS). Voici mon code que je pense peut être amélioré pour beaucoup mieux: xxx

Pouvez-vous suggérer quels sont les meilleurs moyens de faire cela?


0 commentaires

4 Réponses :


3
votes

Je crains que la documentation soit correcte. Le seul autre moyen que je puisse penser, c'est écrire un composant QML personnalisé en C ++, ce que vous voulez.

Si vous avez des connaissances QT / C ++, vous pouvez commencer ici:


0 commentaires

10
votes

J'ai résoudre ce problème avec le code suivant: https://code.google.com/p/ytd-meego/source/browse/trunk/playground/feedbook/qmltube/horizontalgradient.qml?r=144

Voici ce que j'ai fait en utilisant l'exemple de NielsMayer: P>

    Rectangle {
        width: parent.height
        height: parent.width
        anchors.centerIn: parent
        rotation: 90

        gradient: Gradient {
            GradientStop { position: 0.0; color: "black" }
            GradientStop { position: 1.0; color: "white" }
        }
    }


3 commentaires

En effet, un tour génial, fonctionne comme un charme! J'ai fait la même chose, même oublié l'ajout d'ancrage - conduire à des rayures non couvertes.


Je ne comprends pas, comment ça marche pour vous? Si vous Tournez Le rectangle enfant , alors il ira à l'extérieur du rectangle parent . Et cela fonctionne exactement comme j'ai dit pour moi: Storage2.Static.itmages. COM / I / 17/0802 / ... C'est une astuce non robuste. Cela ne fonctionne pas dans tous les cas comme la linéargradient.


@ General656 Vous avez peut-être manqué l'astuce: vous devez échanger la hauteur et la largeur du parent chez l'enfant, cela fonctionne parfaitement pour moi.



7
votes

Le module d'effets graphiques QT introduit dans QT 5.1 fournit trois types de gradient. Avec le lineargradient élément (effet), il n'est plus nécessaire d'appliquer la rotation afin de parvenir à par exemple. un gradient de couleurs horizontal.
En particulier au moyen du document Démarrer et FIND POINT (ATTRIBUTS) de LINEARGRADIENT TOUT DIRECTION DE GRADIENT est possible. < P> Le code suivant implémente un angle de 45 ° (tel que proposé dans le post d'origine) en démarrant le haut à droite avec du fond blanc et finissant à gauche avec noir: xxx


0 commentaires