2017-06-10 279 views
1

我有一个TextArea。如果我设置填充不断填充正常工作。QML TextArea奇怪的填充

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 
    } 
} 

如果我取消注释上面的行,那么我有奇怪的行为。 我在做什么错?

截图

回答

0

这似乎是一个错误,可能是一些更新的缺失,建立ApplicationWindowcontentItem的宽度时,太行长度计算不正确。

如果你写:

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

可以看到,该parent.width最初设置为0,当这种变化发生然后改到640,一定有什么用信号脚麻。

调整窗口大小将更新行长度,以便恢复正确的布局。您可以尝试在http://bugreports.qt.io上提交bugreport以修复它。

除此之外,你可以给一个IDApplicationWindow和使用,而不是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 
    } 
}