【发布时间】:2018-07-09 00:54:46
【问题描述】:
我正在使用 QTextEdit 组件的文本编辑功能在 Qt5.11 上制作应用程序。 它在桌面上运行良好:用户可以选择和编辑文本,我可以通过自己的操作更改上下文菜单 - 一切都很棒。
但在 android 平台上它有点坏了。用户可以通过触摸设置光标位置,但不能选择整个单词或文本范围。如果我以编程方式设置选择,那么 android 键盘将隐藏。之后,如果我单击选择,则会出现范围更改器以及带有禁用“复制”、“剪切”和“粘贴”按钮的奇怪顶部面板。 此外,如果我按住手指几秒钟,屏幕上就会出现一个“粘贴”按钮。我没有看到任何隐藏它、阻止它出现或添加自定义按钮的方法。
我尝试过 QWidgets 项目、QML Quick 项目甚至“Qt Quick Control 2 - Text Editor”示例。总是有相同的行为。
看起来 QTextEdit 具有所有必要的功能,但由于某种原因它无法正常工作并且无法控制。
我想出的最佳解决方案是制作透明的 MouseArea 并手动处理所有触摸。但这正常吗?!
【问题讨论】:
-
看来我需要继承QTextEdit并重新实现mousePressEvent和mouseReleaseEvent。逻辑非常棘手,很多代码位于 QTextEditPrivate、QTextControlPrivate 等内部。所以,定制会非常困难,但我会尝试。
标签: android c++ qt qt5 qtextedit