如何修复 Qt Creator 中找不到 VirtualKeyboard?

问题描述 投票:0回答:2

我正在使用 Qt QML 和 C++ 开发一个项目。我想在其中使用 Qt 虚拟键盘。我安装了该组件并导入了它。我的 Qt 配置:

  1. Qt 6.4.2
  2. Qt 创建者 9.0.2
  3. Cmake 4.3

首先,我在

CMakeList.txt
文件中遇到了一些问题,但我设法通过安装一些软件包来解决它们。但现在,CMake 文件中没有错误,但 QML 文件却显示模块未安装。

Qt Creator Design

这是我的 CMake 文件内容:

cmake_minimum_required(VERSION 3.16)

project(VultureOS VERSION 0.1 LANGUAGES CXX)

set(CMAKE_AUTOMOC ON)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

find_package(Qt6 6.2 COMPONENTS Quick REQUIRED)
find_package(Qt6 COMPONENTS Core Gui Quick VirtualKeyboard REQUIRED)

qt_add_executable(appVultureOS
    main.cpp
)

qt_add_qml_module(appVultureOS
    URI VultureOS
    VERSION 1.0
    QML_FILES main.qml 
)

set_target_properties(appVultureOS PROPERTIES
    MACOSX_BUNDLE_GUI_IDENTIFIER my.example.com
    MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION}
    MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}
    MACOSX_BUNDLE TRUE
    WIN32_EXECUTABLE TRUE
)

target_link_libraries(appVultureOS
    PRIVATE Qt6::Quick)
target_link_libraries(
    appVultureOS PRIVATE Qt6::Core Qt6::Gui Qt6::Quick Qt6::VirtualKeyboard)

install(TARGETS appVultureOS
    BUNDLE DESTINATION .
    LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})

这是我的 QML 文件:

import QtQuick 2.15
import QtQuick.VirtualKeyboard

Window {
    id: window
    width: 640
    height: 480
    visible: true
    title: qsTr("Hello World")

    InputPanel {
        id: inputPanel
        z: 99
        x: 0
        y: window.height
        width: window.width

        states: State {
            name: "visible"
            when: inputPanel.active
            PropertyChanges {
                target: inputPanel
                y: window.height - inputPanel.height
            }
        }
        transitions: Transition {
            from: ""
            to: "visible"
            reversible: true
            ParallelAnimation {
                NumberAnimation {
                    properties: "y"
                    duration: 250
                    easing.type: Easing.InOutQuad
                }
            }
        }
    }
}
qt cmake qml qtvirtualkeyboard
2个回答
2
投票

您没有显示您的

main.cpp
,但我猜您没有加载插件。 Qt 虚拟键盘部署指南对此进行了解释,例如

int main(int argc, char *argv[])
{
    qputenv("QT_IM_MODULE", QByteArray("qtvirtualkeyboard"));

    QGuiApplication app(argc, argv);

1
投票

除了这个答案之外,如果您希望键盘自动激活,您可能还需要一个输入字段(如 TextField)。此时,您会发现需要进行一些定位才能使所有内容都在窗口中完美显示。

注意:如果您使用的是 Qt 6,则无需在

VirtualKeyboard
文件中指定
CMakeLists.txt
Qt6::QuickControls2
即可完成。

© www.soinside.com 2019 - 2024. All rights reserved.