Qt5.7 QML QtQuick;如何为桌面和Android构建可滚动和可编辑的TextArea

使用QtQuick Controls.2,您可以通过将TextArea放入Flickable中来使其可滚动,但是您无法选择文本(因为尝试选择启动滚动).但是,如果你选择selectByMouse,你可以选择,但是你不能滚动.

怎么做?

这是我的示例代码:

import QtQuick 2.7
import QtQuick.Controls 2.0
import QtQml 2.2

ApplicationWindow
{
    visible: true
    width: 640
    height: 800

    function makeText()
    {
        var s = "click <a href=\"http://qt.io\">here</a>\n"
        for (var i = 0; i < 10; ++i)
        {
            s += 
"<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras at tempus felis. Nulla facilisi. Duis quam purus, posuere eu rutrum vel, blandit quis lorem. Cras vitae orci eget lorem luctus cursus quis nec nibh. Sed luctus ligula urna, vel commodo nisi finibus quis. Donec pretium eu purus a porttitor. Nam vehicula nunc quis dui gravida luctus. Morbi fermentum, elit nec ullamcorper accumsan, ex ligula iaculis nisi, id pretium ipsum metus quis quam. In lobortis dignissim semper. Aenean at neque lorem. Maecenas dapibus, arcu a condimentum consequat, mauris enim vehicula nibh, in fringilla quam nisi eu ipsum.</p>"
        }
        return s
    }

    Flickable 
    {
        id: flickable
        anchors.fill: parent
        flickableDirection: Flickable.VerticalFlick

        // place a TextArea inside the flickable, you can edit text
        // but you cannot select because click & move mouse flicks the view.
        TextArea.flickable: TextArea
        {
            id: textarea
            wrapMode: TextArea.Wrap

            font.pointSize: 16
            textMargin: 16
            textFormat: TextEdit.RichText

            // can select but kills scrolling
            //selectByMouse: true

            text: Qt.platform.os + "\n" + makeText()

            // try out links
            onLinkActivated: Qt.openUrlExternally(link)
        }
        ScrollBar.vertical: ScrollBar { }
    }
}

什么是最好的方法,并有一个股票答案(因为应该!).

我试图实现一个想法,您可以使用PressAndHold执行选择.它有点工作,但很繁琐.这是一个好主意吗?这里最好的做法是什么?

另一件事是现在没有用于Controls.2的弹出剪切和粘贴菜单,即使是桌面也会出现.

这是否意味着我必须实施:

>选择过度滚动的方法
>切割&桌面粘贴菜单
>切割& Android的粘贴菜单(没有密钥快捷方式)
> Android的选择句柄
> Android的光标点句柄

我很惊讶地发现这些都不是在所谓的EditArea控件中提供的!

这里有任何建议/参考实施或建议.

BTW,3,4&对照中也没有5

项目文件:https://gist.github.com/anonymous/1ad94c9539fdc51d29258f6164f72487

谢谢.

最佳答案 不幸的是,Qt 5.7.0版本没有为Android及时完成通过Qt平台抽象层的正确文本选择支持.在这方面,iOS和嵌入式Linux的覆盖范围更广.可以通过
https://bugreports.qt.io/browse/QTBUG-34867监控Android方面的任何进展.

点赞