我正在使用 Qt QML 和 C++ 开发一个项目。我想在其中使用 Qt 虚拟键盘。我安装了该组件并导入了它。我的 Qt 配置:
首先,我在
CMakeList.txt
文件中遇到了一些问题,但我设法通过安装一些软件包来解决它们。但现在,CMake 文件中没有错误,但 QML 文件却显示模块未安装。
这是我的 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
}
}
}
}
}
您没有显示您的
main.cpp
,但我猜您没有加载插件。 Qt 虚拟键盘部署指南对此进行了解释,例如
int main(int argc, char *argv[])
{
qputenv("QT_IM_MODULE", QByteArray("qtvirtualkeyboard"));
QGuiApplication app(argc, argv);
除了这个答案之外,如果您希望键盘自动激活,您可能还需要一个输入字段(如 TextField)。此时,您会发现需要进行一些定位才能使所有内容都在窗口中完美显示。
注意:如果您使用的是 Qt 6,则无需在
VirtualKeyboard
文件中指定 CMakeLists.txt
— Qt6::QuickControls2
即可完成。