ARM Linux Qt5.7.1软键盘及虚拟键盘使用
Posted 红尘六欲
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ARM Linux Qt5.7.1软键盘及虚拟键盘使用相关的知识,希望对你有一定的参考价值。
目录
qt5软虚拟键盘使用
.pro文件修改
qt5要使用虚拟键盘只能使用qml布局,不然无法使用
工程文件.pro
增加
DEFINES += QT_QML
QT += qml quick
RESOURCES += \\
demo.qrc
OTHER_FILES += \\
virkey.qml
demo.qrc中增加virkey.qml
qml布局文件
virkey.qml文件内容如下
import QtQuick 2.0
import QtQuick.Window 2.2
import QtQuick.VirtualKeyboard 2.1
Window
visible: true
width: 1024
height: 600
TextInput
text: "11111111111"
font.pointSize: 20
anchors left: parent.left; right: parent.right; margins: 12
TextEdit
anchors.centerIn: parent
width: 500
height: 200
text: "+++test+++"
focus: true
color: "blue"
font.pointSize: 20
readOnly: false
InputPanel
id: inputPanel
z: 99
y: parent.height
anchors.left: parent.left
anchors.right: parent.right
states: State
name: "visible"
/* The visibility of the InputPanel can be bound to the Qt.inputMethod.visible property,
but then the handwriting input panel and the keyboard input panel can be visible
at the same time. Here the visibility is bound to InputPanel.active property instead,
which allows the handwriting panel to control the visibility when necessary.
*/
when: inputPanel.active
PropertyChanges
target: inputPanel
y: parent.height - inputPanel.height
transitions: Transition
from: ""
to: "visible"
reversible: true
ParallelAnimation
NumberAnimation
properties: "y"
duration: 250
easing.type: Easing.InOutQuad
其中
import QtQuick 2.0
import QtQuick.Window 2.2
import QtQuick.VirtualKeyboard 2.1
必需要有,然后InputPanel也必需要有,不然虚拟键盘不会弹出来
这只是其中一种方式,应该还有其它方法
main.cpp如下
#include "mainwindow.h"
#include <QApplication>
#include<QDebug>
#ifdef QT_QML
#include<QQmlApplicationEngine>
//#include <QQuickView>
//#include <QGuiApplication>
//#include <QQmlEngine>
#endif
int main(int argc, char *argv[])
#ifdef QT_QML
qputenv("QT_IM_MODULE", QByteArray("qtvirtualkeyboard"));
QApplication a(argc, argv);
QQmlApplicationEngine eng;
eng.load(QUrl(QStringLiteral("qrc:/virkey.qml")));
if(eng.rootObjects().isEmpty())
qDebug()<<"+++eng.rootObjects().isEmpty(+++";
return -1;
#else
qputenv("QT_IM_MODULE", QByteArray("Qt5input"));
QApplication a(argc, argv);
MainWindow w;
w.show();
#endif
qDebug()<<"+++qt5hello+++";
return a.exec();
效果如下
软键盘使用
参考文章https://blog.csdn.net/onlyshi/article/details/78408000.
生成库文件
由于qt5以上版本接口变换,qt4以前的软键盘无法使用,参考上面文章编译生成so文件
libQt5Inputplugin.so需要依赖googlepinyin.a文件,首先需要编译生成googlepinyin.a
然后放到工程Qt5Input目录下的pinyin目录下,参与静态编译即可
将编译生成的libQt5Inputplugin.so放到QT安装目录下的plugins/platforminputcontexts目录下
或者放到与应用程序同级目录的platforminputcontexts目录下
将Qt5Input目录中的dict和images目录放到目标板同一个目录中
然后声明环境变量QT5_INPUT_DIR
例如将dict和images目录放在/QTDIR/qt5inputdir的目录下,然后声明如下
export QT5_INPUT_DIR=/QTDIR/qt5inputdir
或者在main.cpp中进行设置
工程文件修改
将.pro文件中DEFINES += QT_QML注释掉,然后使用默认ui布局增加输入框
main.cpp不用修改
效果如下
工程下载https://download.csdn.net/download/hclydao/10813105.
工程中有三个工程分别为:
googlepinyin、Qt5Input、qt5hello
======================================
作者:hclydao
http://blog.csdn.net/hclydao
版权没有,但是转载请保留此段声明
===========================================
以上是关于ARM Linux Qt5.7.1软键盘及虚拟键盘使用的主要内容,如果未能解决你的问题,请参考以下文章
在树莓派上原生构建 qt5.7.1 得到错误:/usr/lib/arm-linux-gnueabihf/libQt5Quick.so.5: 未定义对 `QV8Engine::toVariant 的引用