2017-06-10 2 views
1

J'ai une TextArea. Si je mets le rembourrage en permanence, le rembourrage fonctionne normalement.QML TextArea Rembourrage étrange

import QtQuick 2.9 
import QtQuick.Controls 2.2 

ApplicationWindow { 
    visible: true 
    width: 640 
    height: 480 
    title: qsTr("Hello World") 

    TextArea{ 
     font.pixelSize: 20 
     anchors.fill: parent 
     wrapMode: TextArea.Wrap 
     leftPadding: 100 //*parent.width/640 
     rightPadding: 100 //*parent.width/640 
    } 
} 

Si je décommente les lignes ci-dessus, j'ai un comportement étrange. Qu'est-ce que je fais de mal?

Screenshot

Répondre

0

Il semble y avoir un bug, probablement des mises à jour sont manquantes, lors de la configuration de la largeur de la contentItem du ApplicationWindow, de sorte que les longueurs de ligne ne sont pas calculées correctement.

Si vous écrivez:

leftPadding: { 
    console.log(parent, parent.width) 
    return 100 * parent.width/640 
} 

Vous pouvez voir que le parent.width est d'abord réglé sur 0, puis passe à 640. Lorsque ce changement se produit, il doit y avoir quelque chose qui ne va pas avec les signaux.

Un redimensionnement de la fenêtre mettra à jour les longueurs de ligne, de sorte que la mise en page appropriée est restaurée. Vous pouvez essayer de déposer un rapport de bogue sur http://bugreports.qt.io pour le corriger.

Autre que cela, vous pouvez donner un ID à votre ApplicationWindow et utiliser au lieu de parent

import QtQuick 2.7 
import QtQuick.Controls 2.0 

ApplicationWindow { 
    id: win 
    visible: true 
    width: 640 
    height: 480 
    title: qsTr("Hello World") 

    TextArea{ 
     font.pixelSize: 20 
     anchors.fill: parent 
     wrapMode: TextArea.Wrap 
     leftPadding: 100 * win.width/640 
     rightPadding: 100 * win.width/640 
    } 
}