长版
我在浏览器中使用 WebGL 作为平台运行 QML 应用程序。一切正常,直到我尝试集成 QtVirtualKeyboard 以填充一些文本字段和可编辑的组合框。在浏览器中运行项目时,收到的第一条消息是:
This plugin does not support dynamic OpenGL loading!
Run Code Online (Sandbox Code Playgroud)
不过,我怀疑此错误消息/警告与 VirtualKeyboard (VK) 无关,因为删除 VK 的所有痕迹不会使消息消失。可以在下面查看浏览器窗口的屏幕截图。
单击文本输入字段时会出现下一条消息:
This plugin does not support setting window masks
Run Code Online (Sandbox Code Playgroud)
一半的屏幕保持黑色 - 这是刷新 VK 时所在的区域。再次 - 下面的截图。
刷新后,会出现另外三个消息。我将省略前两个,因为它们基本上是在说“您按下了 Alt 键和 F5 键”。第三条消息是:
requestActivate() called for QtVirtualKeyboard::InputView(0x4a16590) which has Qt::WindowDoesNotAcceptFocus set.
Run Code Online (Sandbox Code Playgroud)
现在键盘是可见的,但是每次在 VK 上敲击键时,都会出现新消息,而没有文本写入文本字段:
This plugin does not support setting window masks
This plugin does not support setting window masks
qt.virtualkeyboard: InputContext::sendKeyClick(): no focus to send key click - QGuiApplication::focusWindow() …Run Code Online (Sandbox Code Playgroud) 我正在使用Qml编写一个带有Qt 5.7的小型Windows应用程序.对于我的项目,我需要能够更改虚拟键盘布局.但经过几个小时的阅读文档和尝试各种事情,我仍然无法实现它.
我的Qt安装是默认的Windows安装,它是最新的(只检查是否有更新).
正如您在此处看到的,尽管我的操作系统区域设置为fi_FI,但键盘使用en_EN语言环境.并且还注意到"语言更改"按钮处于禁用状态.
我还尝试从键盘设置列出可用的语言环境,我尝试通过键盘设置手动设置语言环境,但布局不会改变.以下是我的代码:
InputPanel {
id: keyboardPanel
y: Qt.inputMethod.visible ? parent.height - keyboardPanel.height : parent.height
anchors.left: parent.left
anchors.right: parent.right
Component.onCompleted: {
console.log("locales available: " + VirtualKeyboardSettings.availableLocales)
console.log("Locale before changing it: " + VirtualKeyboardSettings.locale)
VirtualKeyboardSettings.locale = "fi_FI";
console.log("Locale after changing it: " + VirtualKeyboardSettings.locale)
}
}
Run Code Online (Sandbox Code Playgroud)
运行该代码的结果是(键盘布局没有改变):
qml: locales available:
qml: Locale before changing it:
qml: Locale after changing it: fi_FI
Run Code Online (Sandbox Code Playgroud)
我可以使用自定义布局,但我不明白你如何改变自定义布局....
任何帮助将不胜感激.
我正在编写一个使用 Qt 5.6.3 和 QtVirtualKeyboard 的应用程序,我需要能够启用/禁用其键。我设法通过手动编辑布局文件来做到这一点,但我需要根据用户输入动态地做到这一点。
我有InputPanel我在我的 qml 文件中使用的像这样
InputPanel {
id: inputPanel
visible: true
y: parent.height - inputPanel.height
anchors.left: parent.left
anchors.right: parent.right
}
Run Code Online (Sandbox Code Playgroud)
这是启用所有键的默认键盘。
此处禁用 Q/W/E/R/T。
如何在 c++ 或 qml 中禁用类似的 VirtualKeyboard 键?
我尝试在 Raspberry-pi 中实现 Qt-Virtualkeyboard,使用PyQt5 - 显示虚拟键盘,但我没有找到它的前缀路径、bin、插件等文件夹,实际上整个 Qt 文件夹不存在。
我试图弄清楚如何在触摸屏上使用虚拟键盘,在 Windows 上使用 python 3.8 和 PyQt5。
我看到 Qt 有他自己的插件 QtVirtualKeyboard。我几乎遵循了这个链接中所做的,首先安装了支持虚拟键盘的 Qt 5.15,然后设置了环境变量。
一个简单的代码示例是这样的:
import os
import sys
from PyQt5.QtWidgets import QApplication
from PyQt5.QtWidgets import QLineEdit
from PyQt5.QtWidgets import QMainWindow
from PyQt5.QtWidgets import QVBoxLayout
from PyQt5.QtWidgets import QWidget
os.environ["QT_IM_MODULE"] = "qtvirtualkeyboard"
class MainWindow(QMainWindow):
def __init__(self):
super(MainWindow, self).__init__()
self.line_edit = None
self.init_ui()
def init_ui(self):
self.line_edit = QLineEdit()
self.line_edit2 = QLineEdit()
self.layout = QVBoxLayout()
self.main_widget = QWidget()
self.main_widget.setLayout(self.layout)
self.layout.addWidget(self.line_edit)
self.layout.addWidget(self.line_edit2)
self.setCentralWidget(self.main_widget)
if __name__ == "__main__":
app = QApplication(sys.argv)
mw = …Run Code Online (Sandbox Code Playgroud) 我尝试将其集成QtVirtualKeyboard到原型中,但我失败了.这是我第一次使用多个项目,或者我必须在QML/QMake-Project中包含非基本内容.
我从git-repository获得了代码并成功运行了这些示例.但现在我很困惑如何将它整合到我自己的项目中.
我的项目结构如下
Proto (dir)
+- Proto.pro
+- main.cpp
+- ...
+---QML (dir) <--- QML-Files
| +-main.qml
| +---CustomControls (dir)
| +---...
+---CPP (dir) <--- C++-Files and Headers
+---RES <--- Icons and stuff
Run Code Online (Sandbox Code Playgroud)
现在我想我可能只是将src-project从虚拟键盘添加到root-folder(Proto),并添加如下内容:
SUBDIR += src/src.pro
Run Code Online (Sandbox Code Playgroud)
to Proto.pro-file
=>是的,我可以这样做,但它没有任何优点.
那么我需要做什么才能真正使用呢?这一定非常简单,因为我无法在google,youtube或SO上找到任何关于它的问题.
编辑=>我仍然失败.这是我的故事:
我尝试了部署方法,按照这里的说明进行操作.
由于我更喜欢在应用程序中使用键盘,因此我执行了以下操作:
make install步骤qmake了另一个论点"CONFIG+=disable-desktop它似乎工作.在提到的目录中获得了新文件:
我正在查看虚拟键盘的 QML 样式。keyboardDesignWidth 和 Height 的目的是什么?我似乎在管理键盘的宽度和高度时遇到了很多麻烦,并且永远无法将其设置为我想要的样子。直接设置 keyboardHeight 和 Width 也没有多大帮助。
问题是组件背景大小是以某种方式在幕后计算的。因此,即使我拥有我想要的键盘按钮和大小,无关的背景也会覆盖我的一些其他控件,并且很难对键盘的大小进行细粒度控制。
直接控制虚拟键盘的宽度和大小的正确方法是什么?
我在嵌入式设备上使用 qt 小部件,但虚拟键盘有问题。键盘显示为全屏并与所有应用程序重叠。
在Yocto 中的虚拟键盘顶部黑屏一文中描述了如何解决此问题。
简而言之,你需要用键盘找到QQuickWindow,并在这个窗口上调用setMask。然后键盘上方的区域就会变成透明的
我在如何使用虚拟键盘查找 QQuickWindow 时遇到问题。我尝试使用
QApplication::allWidgets()
Run Code Online (Sandbox Code Playgroud)
但窗户不在这里。
我正在使用 qml qtvirtual 键盘: https: //github.com/qt/qtvirtualkeyboard
我正在尝试将它与基于小部件的 Qt 应用程序的其余部分“连接”。例如,当我单击 QLineEdit 时,我希望键盘显示出来并在应用程序上下文中像物理键盘一样工作。
为此,我安装了 qtvirtualkeyboard/src 中的内容(qmake && make && make install),这是我的 main.cpp :
#include <QQuickView>
#include <QApplication>
#include <QQmlEngine>
#include <QQmlContext>
int main(int argc, char *argv[]){
qputenv("QT_IM_MODULE", QByteArray("qtvirtualkeyboard"));
QApplication app(argc, argv);
MainWindow w(); // This is a QWidget / QMainWindow
w.setFixedSize(800, 480);
w.show();
return app.exec();
}
Run Code Online (Sandbox Code Playgroud)
当我在桌面上执行此操作时,键盘占据了我屏幕的一半,尽管我的应用程序是 800x480。
当我在带有 7 英寸触摸屏的 Raspberry Pi 上执行它时,键盘占据了页面的一半,并且顶部出现黑色边框。
我想自己修复键盘尺寸。当我创建带有项目等的 QML 文件时,键盘不再显示。