如何使用QtVirtualKeyboard

时间:2017-03-03 10:28:42

标签: qt qml qt5.7 qtvirtualkeyboard

我尝试将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

现在我想我可能只是将src - 项目从虚拟键盘添加到根文件夹(Proto),并添加如下内容:

SUBDIR += src/src.pro

Proto.pro - 文件
=&GT;是的,我可以做到,但没有任何优点。

那么我需要做什么才能真正使用它呢?它一定非常简单,因为我无法在google,youtube或SO上找到任何关于它的问题。

EDIT =&gt;我仍然失败。这是我的故事:

我尝试了部署 -method,按照here的说明进行操作 由于我更喜欢​​在应用程序中使用键盘,因此我执行了以下操作:

  1. 我添加了make install - stept
  2. 我通过了qmake另一个参数"CONFIG+=disable-desktop
  3. 似乎有效。在上述目录中获得了新文件:

    • C:\ Qt的\ Qt5.7.0 \ 5.7 \ mingw53_32 \ QML \ QtQuick \ 虚拟键盘
    • C:\ Qt的\ Qt5.7.0 \ 5.7 \ mingw53_32 \ QML \ QtQuick \ 虚拟键盘 \ 样式
    • C:\ Qt的\ Qt5.7.0 \ 5.7 \ mingw53_32 \插件\ platforminputcontexts \

    现在在我的项目中,我添加了一行

    QT_IM_MODULE=qtvirtualkeyboard myapp
    

    并尝试在我的main.qml

    中导入它
    import QtQuick.VirtualKeyboard 2.0 // (also tried it with 2.1)
    

    我收到了错误:

      

    [path] /main.qml:10模块“QtQuick.VirtualKeyboard”未安装

    我的故事结束了。我失败的任何建议?

2 个答案:

答案 0 :(得分:7)

好的,我终于成功了。虽然它确实非常接近documentation但我不认为文档很容易理解。因此,我将逐步发布这个指导,在那里我将清除自己的错误观念。

  1. git-repository
  2. 下载源代码
  3. 使用QtCreator打开项目 qtvirtualkeyboard.pro ,并使用配置release运行它 它将在Qt-installation目录中创建一些目录和文件。您无需在项目目录中添加任何内容。一旦完成,你对所有项目都有好处。
  4. 请确保将QT_IM_MODULE环境变量设置为包含qtvirtualkeyboard。我的错误是,假设(我不知道为什么)这可以在项目.pro - 文件中完成。这似乎是错误的。 C ++ - 方法似乎很安全:
    qputenv("QT_IM_MODULE", QByteArray("qtvirtualkeyboard"));

  5. 如果您想在应用程序中使用键盘,请添加
    CONFIG += disable-desktop到您的项目.pro - 文件

  6. 玩得开心!

答案 1 :(得分:0)

如果您在特定的Qt版本下选择Qt Virtual Keyboard组件,您应该获得预先构建的二进制文件:

Maintenance Tool

Qt Enterprise Add-ons组件有一个虚拟键盘子组件(?),它可能只为您提供源..不确定。

如果你真的需要在项目的Git仓库中安装模块,可能更容易将其添加为submodule,并在“3rdparty”SUBDIRS子项目中引用它。