2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > 基于嵌入式Qt的输入法syszuxpinyin自动弹出软件盘的问题

基于嵌入式Qt的输入法syszuxpinyin自动弹出软件盘的问题

时间:2023-03-12 21:33:32

相关推荐

基于嵌入式Qt的输入法syszuxpinyin自动弹出软件盘的问题

移植好的syszuxpinyin输入法能正常的检测到控件焦点并自动弹出软键盘

当使用默认的QLineEdit控件时就有了一些小小的问题:

问题一:QLineEditt在默认情况下会自动出现焦点,从而导致一进入界面就弹出软键盘

但是我们需要点击一下控件它才弹出软键盘

解决方法:设置QLineEdit的属性为setFocusPolicy(Qt::StrongFocus)或者是setFocusPolicy(Qt::ClickFocus);

这是帮助文档里的一段说明:

The policy is Qt::TabFocus if the widget accepts keyboard focus by

tabbing,Qt::ClickFocus if the widget accepts focus by clicking,

Qt::StrongFocus if it accepts both, and Qt::NoFocus (the default) if

it does not accept focus at all

问题二:在默认情况下能输入完了以后没有点其他控件而再次输入,简单点就是说点第一次的时候可以弹出,第二次的时候不能

原因是控件无法重新获得焦点,只有当它失去焦点的时候才能重新获得焦点,所以你必须先点其他控件让它失去焦点,然后再点它

重新获得焦点.在板子上试验过就知道

解决方法:子类化QLineEdit

.h文件

#ifndef _QLINEEDITIM_H#define _QLINEEDITIM_H#include <QLineEdit>#include <QMouseEvent>class QLineEditIM : public QLineEdit{Q_OBJECTpublic:explicit QLineEditIM(QWidget *parent = 0);protected:virtual void mousePressEvent(QMouseEvent *event);signals:void clicked();public slots:void showInputMethod();};#endif //_QLINEEDITIM_H

.cpp文件

#include "syszuxim.h"#include "syszuxpinyin.h"#include "qlineeditIM.h"QLineEditIM::QLineEditIM(QWidget *parent):QLineEdit(parent){QWSInputMethod *im = new SyszuxIM;QWSServer::setCurrentInputMethod(im);connect(this, SIGNAL(clicked()), this, SLOT(showInputMethod()));}void QLineEditIM::mousePressEvent(QMouseEvent *event){if (event->button() == Qt::LeftButton){emit clicked();}QLineEdit::mousePressEvent(event);}/** name : void showInputMethod()* Type : QEvent* Func : show inputthmod* in : Null* out : Null*/void QLineEditIM::showInputMethod(){clearFocus();setFocus();}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。