【发布时间】:2015-07-07 17:50:11
【问题描述】:
我正在将现有的 QML/C++ 应用程序移植到 Android 系统。该应用程序已经在 Android 平板电脑上运行,但我遇到了 Android 键盘问题。
由于我的 QML/C++ 应用程序已经实现了自己的键盘,我想禁用一个 Android 键盘。
我尝试在 AndroidManifest.xml 文件中添加 android:windowSoftInputMode="stateAlwaysHidden" 行,但是当我按下编辑框时键盘仍然出现。
由于我正在移植现有应用程序,因此我不想编辑应用程序本身的代码。我唯一可以编辑的是 AndroidManifest.xml、QtApplication.java 和 QtActivity.java 文件。 QtApplication 和 QtActivity 派生自 Application 和 Activity Android 类。
是否可以在应用程序启动时全局禁用整个应用程序的Android键盘(通过编辑清单文件或覆盖onCreate、onStart或类似功能)?
Application 和 Activity 类中是否有任何函数可以覆盖它们并因此禁用本机键盘?
【问题讨论】:
-
是否将您的
editors设为只读选项?然后,您可以使用自定义键盘中的信号来填充/修改文本。 -
@phyatt,对不起,我不明白你的问题。我的问题是当我按下编辑框时,Android 软件键盘和我自己的键盘都出现了。问题是两者都在工作,但我自己的只是隐藏在 Android 的下面。如果我然后关闭Android,我可以使用我自己的。所以解决方案是,为我的整个应用程序全局禁用 Android 键盘,或者如果可以在 QtApplication 和 QtActivity 类中执行此操作,则以某种方式捕获/禁用触发 Android 键盘打开的信号。但现在我不知道该怎么做。
-
doc.qt.io/qt-5/qml-qtquick-textedit.html#readOnly-prop 如果您将其更改为只读,然后单击编辑器或行编辑,或者任何不应该发送信号的东西。您正在谈论的另一个选项是事件过滤器。我会在几分钟内找到一个链接。
标签: android c++ qt keyboard qml