gpt4 book ai didi

c++ - `QVirtualKeyboard` 的激活和部署(在 Windows 中)

转载 作者:行者123 更新时间:2023-11-30 05:06:24 25 4
gpt4 key购买 nike

如何为我的应用程序激活 Qt5 虚拟键盘?更重要的是,Qt 虚拟键盘需要哪些文件才能出现在我部署的应用程序中?

我问这种问答方式是因为我花了很长时间才把所有零碎的东西放在一起。也许其他人会从中受益。

最佳答案

documentation for Qt Virtual Keyboard实际上并没有那么糟糕。然而,对于 QtWidgets/C++ 项目来说,为已部署的应用程序准备好一切仍然具有挑战性。我已经使用 Qt 5.10 和 Windows 10 测试了以下建议:

  1. 安装虚拟键盘。在 Windows 中,这可以通过 Qt 安装程序实现,方法是在相应的 Qt 版本下选择“Qt 虚拟键盘”选项。

    (告诉我其他平台需要什么 - 我会添加此信息)

  2. Enable the environment variable ,即加载插件可以在 main.cpp 中实现(在实例化任何 QApplication 之前):

    qputenv("QT_IM_MODULE", QByteArray("qtvirtualkeyboard"));

    这将为任何输入字段启用虚拟键盘。

  3. 部署应用程序需要哪些文件?虚拟键盘需要自己的plugin.dll,依赖模块Qt5Network, QtQml, QtQuick, QtSvg。所以目录结构必须至少有这些文件:

    platforminputcontexts/qtvirtualkeyboardplugin.dll
    YOURBIN.exe
    Qt5Network.dll
    Qt5Qml.dll
    Qt5Quick.dll
    Qt5Svg.dll

    编辑: 该插件将动态加载更多插件,也使用插件描述文件,因此也部署这些插件(在 qml 子目录中找到它们qt安装目录):

    Qt/labs/folderlistmodel/qmldir
    Qt/labs/folderlistmodel/qmlfolderlistmodelplugin.dll
    QtQuick/Layouts/qmldir
    QtQuick/Layouts/qquicklayoutsplugin.dll
    QtQuick/VirtualKeyboard/Styles/qmldir
    QtQuick/VirtualKeyboard/Styles/qtvirtualkeyboardstylesplugin.dll
    QtQuick/Window.2/qmldir
    QtQuick/Window.2/windowplugin.dll
    QtQuick.2/qmldir
    QtQuick.2/qtquick2plugin.dll
  4. 除了这些文件之外,还需要标准 Dll,可能还需要其他插件、DLL。这完全取决于您的配置以及您是否使用 MSVC 或 MinGW:

    iconengines/...dll
    imageformats/...dll
    platform/...dll
    Qt5Gui.dll
    Qt5Widget.dll
    Qt5Core.dll
    libwinpthread-1.dll
    libEGL.dll
    libGLESv2.dll
    libstdc++-6.dll
    libgcc_s_dw2-1.dll

注意: qt windows deployment tool是一个很好用的工具。但是,默认情况下,它不会复制虚拟键盘所需的所有文件。

编辑 - 注 2: qt windows deployment tool可以复制几乎 所有需要的文件。它不会复制虚拟键盘样式 DLL(Qt 5.10,Mingw)。如果只需要虚拟键盘,它也会复制很多不必要的文件:

windeployqt.exe --compiler-runtime --qmldir c:\Qt\5.10.0\mingw53_32\qml 
--quick --qml --release --force PATH_TO_BINARY

然后手动创建目录/复制相应的 DLL + qmldir 从和到:

QtQuick/VirtualKeyboard/Styles

关于c++ - `QVirtualKeyboard` 的激活和部署(在 Windows 中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47938048/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com