4

使用 QtQuick Controls.2,您可以TextArea通过将其放入 a 中来使其可滚动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 没有弹出式剪切和粘贴菜单,即使在桌面上也会出现。

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

  1. 一种选择滚动的方法
  2. 桌面的剪切和粘贴菜单
  3. Android 的剪切和粘贴菜单(没有快捷键)
  4. Android 的选择句柄
  5. Android 的光标点句柄

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

此处的任何建议/参考实施或建议。

顺便说一句,Controls.1 中也没有 3,4 和 5

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

谢谢。

4

1 回答 1

2

不幸的是,在 Qt 5.7.0 发布之前,通过 Qt 平台抽象层对 Android 的正确文本选择支持并未及时完成。在这方面,iOS 和嵌入式 Linux 得到了更好的覆盖。可以通过https://bugreports.qt.io/browse/QTBUG-34867监控 Android 方面的任何进展。

于 2016-06-17T17:29:32.473 回答