在Android的QTextEdit上进行选择

时间:2018-07-09 00:54:46

标签: android c++ qt qt5 qtextedit

我正在使用QTextEdit组件的文本编辑功能在Qt5.11上制作应用程序。 它在桌面上运行良好:用户可以选择和编辑文本,我可以通过自己的操作更改上下文菜单-一切都很好。

但是在android平台上,它有点坏。用户可以通过触摸设置光标位置,但不能选择整个单词或文本范围。如果我以编程方式设置选择,则android键盘会隐藏。之后,如果我单击选择,则范围更改器以及带有禁用的“复制”,“剪切”和“粘贴”按钮的奇怪的顶部面板出现。 此外,如果我握住手指几秒钟,那么屏幕上将出现单个“粘贴”按钮。我看不到任何隐藏它,防止它出现或添加自定义按钮的方法。

我尝试了QWidgets项目,QML Quick项目,甚至“ Qt Quick Control 2-文本编辑器”示例。总是有相同的行为。

QTextEdit似乎具有所有必要的功能,但是由于某些原因,它无法正常工作并且没有控件。

我想出的最好的解决方案是透明的MouseArea并手动处理所有触摸。但这正常吗?!

1 个答案:

答案 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();
}