QT5.8. настраиваемая виртуальная клавиатура, включая

Я пишу пользовательскую виртуальную клавиатуру, которая основана на QtVirtualKeyboard. Для моего проекта мне нужно было бы использовать мою версию клавиатуры.

Но единственный метод, который я нашел, это перекомпилировать проект и заменить оригинальную "qtvirtualkeyboardplugin.dll" в "mingw53_32\plugins\platforminputcontexts" в моей версии "qtvirtualkeyboardplugin.dll". И использовать qputenv("QT_IM_MODULE", QByteArray("qtvirtualkeyboard")); функция в main.cpp

После нескольких часов чтения документации и проб разных вещей, я все еще не могу найти способ использовать пользовательскую клавиатуру локально, не удаляя оригинальный файл "qtvirtualkeyboardplugin.dll".

1 ответ

Решение

Я предполагаю, что вы разветвили код, и в этом случае следующих модификаций кажется достаточно, чтобы установить плагин с другим именем для установки в plugins/platforminputcontexts:

  • переименовывать qtvirtualkeyboard/src/virtualkeyboard/qtvirtualkeyboard.json в qtvirtualkeyboard/src/virtualkeyboard/customvirtualkeyboard.json,
  • В customvirtualkeyboard.jsonпереименуйте qtvirtualkeyboard ключ к customvirtualkeyboard,
  • В qtvirtualkeyboard/src/virtualkeyboard/plugin.cpp, измените содержимое pluginName строка в customvirtualkeyboard,
  • В qtvirtualkeyboard/src/virtualkeyboard/plugin.h, изменить FILE строка в customvirtualkeyboard,
  • В src/virtualkeyboard/virtualkeyboard.pro, менять TARGET = qtvirtualkeyboardplugin в TARGET = customvirtualkeyboardplugin, Это влияет на имя установленного.dll, .lib и т. Д., Которое вы видите в plugins/platforminputcontexts,

Вот изменения в Git diff:

diff --git a/src/virtualkeyboard/customvirtualkeyboard.json b/src/virtualkeyboard/customvirtualkeyboard.json
new file mode 100644
index 0000000..9ef7a87
--- /dev/null
+++ b/src/virtualkeyboard/customvirtualkeyboard.json
@@ -0,0 +1,3 @@
+{
+    "Keys": [ "customvirtualkeyboard" ]
+}
diff --git a/src/virtualkeyboard/plugin.cpp b/src/virtualkeyboard/plugin.cpp
index 73ddeab..4abe9a4 100644
--- a/src/virtualkeyboard/plugin.cpp
+++ b/src/virtualkeyboard/plugin.cpp
@@ -76,7 +76,7 @@ using namespace QtVirtualKeyboard;

 Q_LOGGING_CATEGORY(qlcVirtualKeyboard, "qt.virtualkeyboard")

-static const char pluginName[] = "qtvirtualkeyboard";
+static const char pluginName[] = "customvirtualkeyboard";
 static const char inputMethodEnvVarName[] = "QT_IM_MODULE";
 static const char pluginUri[] = "QtQuick.VirtualKeyboard";
 static const char pluginSettingsUri[] = "QtQuick.VirtualKeyboard.Settings";
diff --git a/src/virtualkeyboard/plugin.h b/src/virtualkeyboard/plugin.h
index 08074d1..19593a4 100644
--- a/src/virtualkeyboard/plugin.h
+++ b/src/virtualkeyboard/plugin.h
@@ -38,7 +38,7 @@
 class QVirtualKeyboardPlugin : public QPlatformInputContextPlugin
 {
     Q_OBJECT
-    Q_PLUGIN_METADATA(IID QPlatformInputContextFactoryInterface_iid FILE "qtvirtualkeyboard.json")
+    Q_PLUGIN_METADATA(IID QPlatformInputContextFactoryInterface_iid FILE "customvirtualkeyboard.json")

 public:
     QStringList keys() const;
diff --git a/src/virtualkeyboard/qtvirtualkeyboard.json b/src/virtualkeyboard/qtvirtualkeyboard.json
deleted file mode 100644
index 76d1706..0000000
--- a/src/virtualkeyboard/qtvirtualkeyboard.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-    "Keys": [ "qtvirtualkeyboard" ]
-}
diff --git a/src/virtualkeyboard/virtualkeyboard.pro b/src/virtualkeyboard/virtualkeyboard.pro
index 4f3ca69..e9b0ff9 100644
--- a/src/virtualkeyboard/virtualkeyboard.pro
+++ b/src/virtualkeyboard/virtualkeyboard.pro
@@ -1,4 +1,4 @@
-TARGET  = qtvirtualkeyboardplugin
+TARGET  = customvirtualkeyboardplugin
 DATAPATH = $$[QT_INSTALL_DATA]/qtvirtualkeyboard

 QMAKE_DOCS = $$PWD/doc/qtvirtualkeyboard.qdocconf

Помните, что если вы используете лицензию с открытым исходным кодом, вы должны внести изменения в код Qt, доступные пользователям вашего приложения.

Другие вопросы по тегам