0

尝试不同的代码组合并部分解决我的问题,我遇到了一种我无法解释的行为。因此,当我创建一个没有 Scrollview 的简单 TextArea 时,它看起来像这样:

在此处输入图像描述

RowLayout  {
    id: rowLayout
    Rectangle{                       
        height: 50
        width: 295
        TextArea {
            id: textArea
            text: (" message...")
           wrapMode: Text.WrapAnywhere
           anchors.fill: parent
        }                
    }

文本区域创建默认背景。现在我想用 ScrollView 做 TextArea 也用默认的 TextArea 背景,但结果是这样的:

在此处输入图像描述

RowLayout  {
    id: rowLayout
    Rectangle{
       height: 50
        width: 295
    ScrollView {
       id: scrollView1
        anchors.fill: parent

    TextArea {
            id: textArea
            text: (" message...")
           wrapMode: Text.WrapAnywhere                           
        }
    }
}

设置默认 TextArea 背景的唯一机会是设置implicitHeight,implicitWidth,但是在将文本输入到 TextArea 直到出现滚动条之后,背景会通过像这样的其他组件在整个长度上延伸:

在此处输入图像描述

RowLayout  {
    id: rowLayout
    Rectangle{
        //color: "#00000000"
       height: 50
        width: 295
    ScrollView {
       id: scrollView1
        anchors.fill: parent
    TextArea {
            id: textArea
            text: (" message...")
           wrapMode: Text.WrapAnywhere
              implicitHeight: 50
              implicitWidth: 295
        }
    }
}

所以我唯一想要的是一个可滚动的文本区域,但有这个黑色的默认背景,而不是我可以用矩形做的背景。任何人都可以看看吗?谢谢 :)

4

1 回答 1

2

我尽力了。检查下面的示例,希望它会有所帮助=)

import QtQuick 2.9
import QtQuick.Window 2.2
import QtQuick.Controls 2.2
import QtQuick.Layouts 1.3

ApplicationWindow {
    visible: true

    width: 400
    height: 400

    RowLayout {
        width: 295
        height: 50

        anchors.centerIn: parent

        ScrollView {
            Layout.fillHeight: true
            Layout.fillWidth: true

            background: Rectangle { color: "black" }

            TextArea {
                id: messageField

                placeholderText: qsTr("message...")

                color: "white"

                wrapMode: TextArea.WrapAnywhere
            }
        }
    }
}

结果:

在此处输入图像描述

于 2018-12-18T08:29:42.697 回答