gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 12:36:03 25 4
gpt4 key购买 nike

使用 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 现在没有弹出剪切和粘贴菜单,即使对于桌面也会出现。

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

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

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

这里有任何建议/引用实现或建议。

顺便说一句,Controls.1 中也缺少 3,4 和 5

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

谢谢。

最佳答案

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

关于Qt5.7 QML QtQuick;如何为桌面和 Android 构建可滚动和可编辑的 TextArea,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37883059/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com