我正在使用QTextEdit组件的文本编辑功能在Qt5.11上制作应用程序。 它在桌面上运行良好:用户可以选择和编辑文本,我可以通过自己的操作更改上下文菜单-一切都很好。
但是在android平台上,它有点坏。用户可以通过触摸设置光标位置,但不能选择整个单词或文本范围。如果我以编程方式设置选择,则android键盘会隐藏。之后,如果我单击选择,则范围更改器以及带有禁用的“复制”,“剪切”和“粘贴”按钮的奇怪的顶部面板出现。 此外,如果我握住手指几秒钟,那么屏幕上将出现单个“粘贴”按钮。我看不到任何隐藏它,防止它出现或添加自定义按钮的方法。
我尝试了QWidgets项目,QML Quick项目,甚至“ Qt Quick Control 2-文本编辑器”示例。总是有相同的行为。
QTextEdit似乎具有所有必要的功能,但是由于某些原因,它无法正常工作并且没有控件。
我想出的最好的解决方案是透明的MouseArea并手动处理所有触摸。但这正常吗?!
答案 0 :(得分:1)
在Qt 5.8到5.11中,自动文本选择处理似乎有点麻烦。也许最好是简单地禁用它们,然后手动添加自己的按钮以进行剪切/复制/粘贴。至少到目前为止,直到Qt在将来的版本中使它们正确为止。
通过深入研究Qt Platform Abstraction代码的内胆,我发现了一个未记录的环境变量,您可以将其设置为禁用文本选择句柄的显示。操作方法如下:
int main(int argc, char *argv[])
{
#ifdef Q_OS_ANDROID
qputenv("QT_QPA_NO_TEXT_HANDLES", "1");
#endif
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}