首页 > 解决方案 > QML ScrollView 不允许滚动长文本

问题描述

我有以下滚动视图中长富文本的最小示例。问题是滚动视图不允许滚动到文本的底部。

import QtQuick 2.14
import QtQuick.Controls 2.14

Item {
   anchors.fill: parent

   Rectangle {
      anchors.centerIn: parent
      width: 800
      height: 600

      color: "lightgrey"

      ScrollView {
         anchors.fill: parent

         contentWidth: width - 5
         contentHeight: descriptionText.height
         clip: true
         ScrollBar.vertical.policy: contentHeight > height ? ScrollBar.AlwaysOn : ScrollBar.AlwaysOff

         Text {
            id: descriptionText
            width: parent.width - 5

            textFormat: Text.RichText
            wrapMode: Text.WordWrap
            font.pointSize: 12

            text: `<p>
                       Liberis velum, tanquam brevis mineralis. Domesticus tumultumque acceleratrix imperiums gluten est. Heu, brevis
                       cannabis! Nunquam locus cursus. Eheu, magnum zirbus! Rector pius acipenser est. Devirginatos credere, tanquam noster
                       tabes. Fortis amors ducunt ad finis. Ubi est domesticus vita? Mirabilis frondators ducunt ad hibrida. Medicina,
                       gabalium, et absolutio. Historia noceres, tanquam peritus decor. Mortems velum, tanquam flavum zirbus. Studere una
                       ducunt ad dexter nutrix. Cum mineralis cadunt, omnes absolutioes contactus superbus, secundus exemplares. Ubi est
                       castus racana? Pol, a bene fermium, magnum lanista!Acipensers messis!
                   </p>
                   <ul>
                       <li>Fatalis verpas ducunt ad racana.</li>
                       <li>Ubi est regius exsul?</li>
                       <li>Noster contencio aegre imitaris amor est.</li>
                       <li>Ubi est secundus omnia?</li>
                       <li>Parmas sunt resistentias de regius uria.</li>
                       <li>Fidelis, festus brodiums tandem talem de flavum, domesticus quadra.</li>
                   </ul>
                   <p>
                       Bursa noceres, tanquam flavum nixus. Gratis sectams ducunt ad zelus. Pol, idoleum! Cum quadra cadunt, omnes exsules
                       anhelare azureus, castus orgiaes. Sunt valebates consumere varius, brevis caculaes. Canis velox fides est. Nunquam
                       imitari nomen. Cur onus favere? Festus xiphiass ducunt ad index. Heuretes tolerares, tanquam teres sensorem. Cur
                       buxum velum? Rusticus castors ducunt ad plasmator. Ubi est magnum brabeuta? Calcaria de bassus liberi, gratia imber!
                       Primus lapsus mechanice tractares zelus est. A falsis, turpis nobilis fides. A falsis, era barbatus abactus. Heu,
                       rusticus bromium! Spatiis observare in antenna! Est fatalis extum, cesaris. Nunquam captis nomen. Tatas nocere! Sunt
                       nutrixes demitto regius, lotus dominaes. Assimilatios sunt vigils de clemens glos. Est castus clabulare, cesaris.
                   </p>
                   <p>
                       Assimilatio de neuter fuga, gratia animalis! Cum lactea observare, omnes indictioes examinare azureus, germanus
                       nixes. Ubi est grandis ausus? Clemens, fidelis rationes sapienter visum de domesticus, peritus itineris tramitem.
                       Detrius de emeritis mens, demitto spatii! Dexter, ferox brabeutas satis dignus de mirabilis, fidelis particula. Cur
                       exsul manducare? Sunt compateres pugna velox, raptus planetaes. Cum adelphis experimentum, omnes eraes aperto
                       azureus, gratis verpaes. Cum rumor ridetis, omnes brodiumes captis peritus, albus galataees.
                   </p>
                   <p>
                       Galataes resistere! Audax, emeritis frondators grauiter reperire de lotus, barbatus ionicis tormento.
                       Capio de varius bubo, acquirere fluctus! Salvus, raptus imbers sed mire manifestum de germanus, superbus racana.
                       Cum itineris tramitem nocere, omnes peses demitto pius, talis detriuses!
                   </p>
                   <p>
                       Toruss sunt nuclear vexatum iaceres de festus fermium.
                   </p>`
         }
      }
   }
}

我已经打印了滚动视图的heightandcontentHeight并且 contentHeight 大于height. 这不是可滚动的要求吗?

标签: qtqmlqt5

解决方案


我更改了您的代码中的某些内容并为您更正了该问题:首先,您的问题出在文本中,添加您的文本,您qsTr还应该设置focus: true

而且我删除width: parent.width - 5了这个东西给你带来了这个问题,而不是我添加 anchors.fill: parent

import QtQuick 2.14
import QtQuick.Controls 2.14

Item {
    anchors.fill: parent

    Rectangle {
        anchors.centerIn: parent
        width: 800
        height: 600

        color: "lightgrey"

        ScrollView {
            anchors.fill: parent

            contentWidth: width - 5
            contentHeight: descriptionText.height
            clip: true
            ScrollBar.vertical.policy: contentHeight > height ? ScrollBar.AlwaysOn : ScrollBar.AlwaysOff

            Text {
                id: input
                anchors.fill: parent
                focus: true
                textFormat: Text.RichText
                wrapMode: Text.WordWrap
                font.pointSize: 12

                text: qsTr("
                             <p>
                                Liberis velum, tanquam brevis mineralis. Domesticus tumultumque acceleratrix imperiums gluten est. Heu, brevis
                                cannabis! Nunquam locus cursus. Eheu, magnum zirbus! Rector pius acipenser est. Devirginatos credere, tanquam noster
                                tabes. Fortis amors ducunt ad finis. Ubi est domesticus vita? Mirabilis frondators ducunt ad hibrida. Medicina,
                                gabalium, et absolutio. Historia noceres, tanquam peritus decor. Mortems velum, tanquam flavum zirbus. Studere una
                                ducunt ad dexter nutrix. Cum mineralis cadunt, omnes absolutioes contactus superbus, secundus exemplares. Ubi est
                                castus racana? Pol, a bene fermium, magnum lanista!Acipensers messis!
                            </p>
                            <ul>
                                <li>Fatalis verpas ducunt ad racana.</li>
                                <li>Ubi est regius exsul?</li>
                                <li>Noster contencio aegre imitaris amor est.</li>
                                <li>Ubi est secundus omnia?</li>
                                <li>Parmas sunt resistentias de regius uria.</li>
                                <li>Fidelis, festus brodiums tandem talem de flavum, domesticus quadra.</li>
                            </ul>
                            <p>
                                Bursa noceres, tanquam flavum nixus. Gratis sectams ducunt ad zelus. Pol, idoleum! Cum quadra cadunt, omnes exsules
                                anhelare azureus, castus orgiaes. Sunt valebates consumere varius, brevis caculaes. Canis velox fides est. Nunquam
                                imitari nomen. Cur onus favere? Festus xiphiass ducunt ad index. Heuretes tolerares, tanquam teres sensorem. Cur
                                buxum velum? Rusticus castors ducunt ad plasmator. Ubi est magnum brabeuta? Calcaria de bassus liberi, gratia imber!
                                Primus lapsus mechanice tractares zelus est. A falsis, turpis nobilis fides. A falsis, era barbatus abactus. Heu,
                                rusticus bromium! Spatiis observare in antenna! Est fatalis extum, cesaris. Nunquam captis nomen. Tatas nocere! Sunt
                                nutrixes demitto regius, lotus dominaes. Assimilatios sunt vigils de clemens glos. Est castus clabulare, cesaris.
                            </p>
                            <p>
                                Assimilatio de neuter fuga, gratia animalis! Cum lactea observare, omnes indictioes examinare azureus, germanus
                                nixes. Ubi est grandis ausus? Clemens, fidelis rationes sapienter visum de domesticus, peritus itineris tramitem.
                                Detrius de emeritis mens, demitto spatii! Dexter, ferox brabeutas satis dignus de mirabilis, fidelis particula. Cur
                                exsul manducare? Sunt compateres pugna velox, raptus planetaes. Cum adelphis experimentum, omnes eraes aperto
                                azureus, gratis verpaes. Cum rumor ridetis, omnes brodiumes captis peritus, albus galataees.
                            </p>
                            <p>
                                Galataes resistere! Audax, emeritis frondators grauiter reperire de lotus, barbatus ionicis tormento.
                                Capio de varius bubo, acquirere fluctus! Salvus, raptus imbers sed mire manifestum de germanus, superbus racana.
                                Cum itineris tramitem nocere, omnes peses demitto pius, talis detriuses!
                            </p>
                            <p>
                                Toruss sunt nuclear vexatum iaceres de festus fermium.
                            </p>")
            }


        }
    }
}

推荐阅读