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

2023-11-14

移植好的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_OBJECT
public:
	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();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • Mac OS X 文件关联有效,但文件图标未更改

    我使用 Qt 5 3 2 开发了一个 Mac 应用程序 该应用程序处理具有特定扩展名的文件 比方说 xyz 我创建了一个名为 XYZ icns 的图标文件 并将其添加到我的应用程序包资源文件夹中 MyApp app Contents Res
  • QGroupBox边框

    经过一段时间的搜索后 我发现在组框上设置可见边框的方法是使用 StyleSheet 属性 我补充道 border 2px solid gray 但有几个问题 1 组框内的所有内容也继承此设置 2 边框在标题附近有一个小洞 碎片缺失 Here
  • 检查目录是否为空

    我正在尝试检查目录是否为空 MainWindow MainWindow QWidget parent QMainWindow parent ui new Ui MainWindow ui gt setupUi this QDir Dir h
  • cx_freeze:QODBC 驱动程序未加载

    我的 python 应用程序如下所示 test py from PyQt4 import QtCore from PyQt4 import QtGui from PyQt4 import QtSql import sys import at
  • Windows 消息循环而不是 QApplication::exec() / QApplication::processEvents()

    我是否想念任何一个Qt如果我替换功能QApplication exec 使用标准 Windows 消息循环实现 这应该可以澄清我的意思 运行事件处理的常用 Qt 方式 int main int argc char argv QApplica
  • Qt GUI 编程设计

    我正在尝试创建一个 GUI 应用程序 主窗口 一个QMainWindow 包含 9 个固定大小的标签以及主窗口的大小 我尝试在没有 Qt GUI Designer 的情况下以编程方式制作它 该项目构建时没有错误 但我看不到主窗口上显示的任何
  • 安装多个版本的 Qt 库

    我在windows中安装了QtSDK 它的Qt库版本是4 7 0 现在我想为 mingw 和 VS2008 安装 Qt 库版本 4 8 2 我怎样才能做到这一点 如何向QtCreator引入多个版本 注意 我已经从以下位置下载了库http
  • 当 QML 对象不可见时防止 QML 属性绑定?

    我正在开发一个具有大量属性绑定的 QML 应用程序 数百个对象被跟踪并以不同的形式显示 例如 Qt3D QCanvas 当我在应用程序的单独页面上时 x y 位置和相对大小的属性绑定仍在发生 我怎样才能阻止他们 我知道我可以根据属性是否可视
  • Qt WinRT 应用程序无法访问文件权限被拒绝

    我需要使用 Qt 和 FFMPEG 开发 WinRT 应用程序 我根据指令构建了 WinRT 的 ffmpeghere https github com Microsoft FFmpegInterop我可以将库与我的项目链接起来 现在我需要
  • QTcpSocket 有时不发送数据

    我有两个 QT 应用程序 一个应用程序可以被认为保存了大数据 它每秒向第二个应用程序发送大约 10 KB 的数据块 之前我尝试使用QUdpSocket来传输数据 但由于MTU限制在2 5K左右 并且需要自己分割和重新组合数据 所以我改用QT
  • QTextEdit.find() 在 Python 中不起作用

    演示问题的简单代码 usr bin env python import sys from PyQt4 QtCore import QObject SIGNAL from PyQt4 QtGui import QApplication QTe
  • 如何在带有预编译头的项目中使用google protobuf

    我有一个包含多个项目的解决方案 我的项目 但不是全部 使用预编译头 我决定使用 protobuf 但遇到了一个问题 在 protoc exe 从 proto 生成 pb h 后 我尝试包含标头并收到错误 预编译标头未包含在 pb h 中 我
  • 加权 Voronoi 的 CGAL 2D APOLLONIUS 图 - 如何生成和获取面和顶点?

    我正在尝试根据阿波罗尼乌斯图生成加权沃罗诺伊 我正在使用 CGAL 库 我找不到如何从 apollonius 获取面和顶点的好例子 我有以下类型定义 typedef double NT typedef CGAL Cartesian lt N
  • QGraphicsScene::clear 不会改变 sceneRect

    我有一个 QGraphicsScene 场景 和 QGraphicsView graphicsView 我有一个画图的方法 当我需要重绘所有图形时 我调用这个方法 一切都好 但我意识到 scene gt clear 不会改变 sceneRe
  • 在 Qt5 中,是否需要 Q_INVOKABLE 来从 QML 调用公共 QObject 函数?

    我刚刚意识到我可以调用暴露于 QML 的对象的几乎任何函数 现在我对 Q INVOKABLE 很好奇 Qt5docs http doc qt io qt 5 qtqml cppintegration exposecppattributes
  • Qt 文件对话框默认后缀不起作用

    我将以下代码用于 QtQuick Dialogs 1 3 和 Qt 5 10 0 下 filedialog 的新属性 我使用 Qt Creator 5 10 默认套件构建它 import QtQuick 2 10 import QtQuic
  • 如何创建用于 QML 的通用对象模型?

    我想知道是否有任何宏或方法如何将 Qt 模型注册为 QObject 的属性 例如 我有AnimalModel http doc qt io qt 5 qtquick modelviewsdata cppmodels html qabstra
  • 使用 Visual Studio 2013 构建 Qt 5.2.1 的静态版本

    几天来我一直在尝试使用 Visual Studio 2013 构建 Qt 的静态版本 我就是不明白我做错了什么 System Windows 7 64 位 Visual Studio 2013 仍安装 Visual Studio 2012
  • 更改 Qt OpenGL 窗口示例以使用 OpenGL 3.3

    我正在尝试更改 Qt OpenGL 示例以使用更现代的 opengl 版本 330 似乎合适 所以我做了 在 main cpp 上设置版本和配置文件 设置着色器版本 更改着色器以使用统一 它现在构建没有任何错误 但我只看到一个空白窗口 我错
  • 如何获取 QTableView 的标题列表?

    我有一个QTableView我的对话框中的对象 我需要访问该表的水平标题并将它们放入QStringList object 尽管进行了大量搜索 但我在 Qt 文档中找不到如何获取此标头列表 编辑 我发现的最接近的地方是this https w

随机推荐

  • PyCharm远程连接Spark

    PyCharm远程连接Spark 使用PyCharm连接远程服务器 总结一下完善的步骤 连接前一定要保证集群已经可以运行pyspark程序 1 添加SFTP连接 找到菜单Tool gt Deployment gt Configuration
  • Java学习资料

    Javadoop https javadoop com 公众号 Java学习录 https mp weixin qq com s xqDPttr53rxLBi8t8kIQDg bugstack 虫洞栈 https bugstack cn
  • IO学习系列之使用read和write复制文件内容

    read函数 功能 从文件fd中读取count个字节 存放进指针buf 具体内容 include
  • forest--声明式HTTP客户端框架-spring-b oot项目整合

    Forest 是一个开源的 Java HTTP 客户端框架 它能够将 HTTP 的所有请求信息 包括 URL Header 以及 Body 等信息 绑定到您自定义的 Interface 方法上 能够通过调用本地接口方法的方式发送 HTTP
  • 基于MATLAB的BP神经网络的数据分类

    1 BP神经网络的简介 BP神经网络是一种多层前馈神经网络 该网络的主要特点是信号前向传递 误差反向传播 在前向传递中 输入信号从输出层经隐含层逐层处理 直至输出层 每一层神经元状态只会影响下一层神经元状态 如果输出层得不到期望输出 则转入
  • 添加视频字幕后期制作Premiere Pro 2022中文

    Premiere Pro 2022是一款PR视频剪辑软件 同时支持M1 M2芯片和Intel芯片安装 可以帮助用户提升自己的创作能力和创作自由度 具有易学 高效 精确的优点 可为用户提供采集 剪辑 调色 美化音频 字幕添加 输出 DVD刻录
  • Google发布VS Code,支持Kubernetes应用开发

    VS Code以及IntelliJ适合用来开发本地端应用开发 但在开发云端应用的时候 Google提到 因为本地端与云端执行环境的差异 部分云端应用会抱错误 要在开发周期的后期才能被发现 而Cloud Codes能有效改善这个问题 由于是第
  • Ubuntu实时监控网速、CPU、内存

    Ubuntu实时监控网速 CPU 内存 sudo add apt repository ppa fossfreedom indicator sysmonitor sudo apt get update sudo apt get instal
  • 【Python】数据可视化-散点图绘制

    Python在数据科学中拥有十分重要的地位 numpy scipy pandas scikit learn这些高效易用 接口统一的科学计算包使其在数据分析处理过程更加方便快捷 其强大的数据可视化工具也是重要组成部分 在Python中 使用的
  • linux基本命令与终端操作、linux命令英文全称解释、ls clear cd pwd cat touch cp rm rmdir mkdir mv file find grep sudo su

    linux终端的命令提示符 命令提示符由四部分组成 当前登陆的用户名 主机名 当前所在目录 用户提示符 linux基本命令 查看目录下文件及文件夹 ls 英文全称 助记 list 命令参数 a all 输出所有文件及文件夹 包括隐藏文件 l
  • LoFTR配置运行: Detector-Free Local Feature Matching with Transformers ubuntu18.04 预训练模型分享

    刚装好系统的空白系统ubuntu18 04安装 首先进入 软件与更新 换到国内源 论文下载 代码下载 1 anaconda 3 5 3 安装 Index of anaconda archive 清华大学开源软件镜像站 Tsinghua Op
  • Redis进阶

    一 Redis集群和分布式锁 1 1 Redis集群的概念和优势 Redis集群是一种分布式系统架构 它将多个Redis实例组成一个逻辑集群 实现数据的分布式存储和高可用性 每个Redis实例负责存储集群中的一部分数据 通过节点之间的协调和
  • 【Git】Linux系统下Git的升级

    Git 在很多发行版的 Linux 系统里的版本都很低 比如说比 2 18 这个版本还低 这里比较的一般就是码农的本地环境 因为本地 Mac 系统等等大家经常用到的预装的 Git 的版本都比较深 Git 的版本太低有很多衍生问题 除了本身
  • ROS中使用VLP16激光雷达获取点云数据

    ROS中使用VLP16激光雷达获取点云数据 个人博客地址 本文测试环境为 Ubuntu20 04 ROS Noetic 需要将激光雷达与PC连接 然后在设置 gt 网络 gt 有线中将IPv4改为手动 并且地址为192 168 1 100
  • Linux----一条命令更改主机名(临时

    前言 看了些许关于更改主机名的博客 觉得不够简单 略为繁琐 现在介绍两种极其简单的方法来修改主机名 hostname 查看当前主机名 一 临时修改主机名 hostname kiosk kiosk为想要更改的主机名 示例 注意 重启后即失效
  • Java中的private、protected、public和default的区别

    这个问题 应该很老了 但是确实是重点中的重点 如果没有真正的都用过这些修饰符 其实对其的作用并不深刻 我也没用过默认的修饰符 所以有时候也总把friendly和protected搞混 还因为这个丢失了一次很好的工作机会 随意今天又重新弄了一
  • STM32 CAN/CANFD软件快速配置(HAL库版本)

    STM32 CAN CANFD软件快速配置 HAL库版本 目录 STM32 CAN CANFD软件快速配置 HAL库版本 前言 1 软件编程 1 1 建立工程 1 2 初始化 1 2 1 引脚设置 1 2 2 CAN基本参数设置 1 2 3
  • 【计算机网络】湖科大微课堂笔记 p4-p6 计算机网络的定义和分类、性能指标

    计算机网络的定义和分类 了解 定义 此图是否是计算机网络 不是 因为它不自治 分类 广域网是因特网的核心部分 四种拓扑结构的网络 优缺点在视频里7 45 9 10 计算机网络的性能指标 常用的性能指标有以下8个 速率 带宽 吞吐量 时延 时
  • poll和epoll及实现epoll网络服务器

    I O多路转接之poll poll函数原型 参数解释 参数 解释 fds 是 个poll函数监听的结构列表 nfds 表示fds数组的长度 timeout 表示poll函数的超时时间 单位是毫秒 ms pollfd结构 那么fds是一个什么
  • 基于嵌入式Qt的输入法syszuxpinyin自动弹出软件盘的问题

    移植好的syszuxpinyin输入法能正常的检测到控件焦点并自动弹出软键盘 当使用默认的QLineEdit控件时就有了一些小小的问题 问题一 QLineEditt在默认情况下会自动出现焦点 从而导致一进入界面就弹出软键盘 但是我们需要点击