首页> 中国专利> 基于Qt图形界面软件的操作日志记录方法及系统

基于Qt图形界面软件的操作日志记录方法及系统

摘要

本发明公开一种基于Qt图形界面软件的操作日志记录方法及系统,通过对用户在Qt图形界面上对Qt控件操作而产生的操作事件进行采集和处理,首先将Qt操作事件的类型分为鼠标事件和键盘事件;然后根据事件的信息分析用户使用鼠标或使用键盘对Qt控件的操作,获得Qt控件信息并形成鼠标操作日志数据或键盘输入日志数据;最后将鼠标操作日志数据和键盘输入日志数据压缩为日志数据包,并将日志数据包进行文件记录。因此,本发明通过采集和分析用户在操作Qt控件时Qt图形界面所产生的事件信息,获得用户在操作鼠标或键盘时所处理Qt控件的名称、类型、位置等信息,并通过Qt控件信息得到该控件实现的具体功能,从而为快速记录软件系统的用户操作日志提供了途径。

著录项

  • 公开/公告号CN105607985A

    专利类型发明专利

  • 公开/公告日2016-05-25

    原文格式PDF

  • 申请/专利号CN201510629301.5

  • 发明设计人 潘超;鲁爱国;朱博;田华;

    申请日2015-09-29

  • 分类号G06F11/34(20060101);

  • 代理机构武汉河山金堂专利事务所(普通合伙);

  • 代理人胡清堂

  • 地址 430205 湖北省武汉市东湖新技术开发区凤凰产业园藏龙北路1号

  • 入库时间 2023-12-18 15:29:29

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-02-06

    授权

    授权

  • 2016-06-22

    实质审查的生效 IPC(主分类):G06F11/34 申请日:20150929

    实质审查的生效

  • 2016-05-25

    公开

    公开

说明书

技术领域

本发明涉及一种软件系统的日志记录技术,特别涉及一种基于Qt图形界面 软件的操作日志记录方法及系统。

背景技术

软件操作日志是记录用户在使用软件的过程中,通过鼠标和键盘在操作界 面上执行的点击和输入操作,以及执行操作所实现的功能。软件操作日志对于 分析软件性能、定位操作异常、以及维护优化功能等具有重要作用。例如,通 过记录用户在界面上的操作,可以统计各种界面及其控件的使用频率,为界面 显示方式和控件布局的合理设计提供建议;通过记录用户对软件功能的使用, 可以知道用户经常使用的功能,对软件的常用功能进行重点优化;特别是,当 用户在操作中造成软件系统崩溃时,可以追踪到崩溃来源的具体操作信息。操 作日志已成为软件系统日志最重要的组成部分之一。

目前,大多数成熟的软件系统都具备操作日志记录功能。例如WindowsXP 系统日志记录了用户安装、更新和删除程序的操作,Oracle数据库记录了用户对 数据库表和字段的修改,Linux下的history命令可记录用户在终端下的键盘输入 命令。另外一些软件,如Window7自带的问题步骤记录器、按键精灵软件、键 盘鼠标记录大师等,可以通过抓屏的方式记录鼠标键盘的具体操作。

Qt是一款跨平台的图形界面应用程序框架,它提供了大量成熟的Qt控件, 通过事件消息的方式实现控件的人机交互。通过Qt控件的组合,可为软件系统 制作出丰富的图形界面,方便用户进行复杂的软件操作。目前,国内外已经使 用Qt开发了多种界面软件系统,由用户在界面上操作各种Qt控件来执行功能。 然而,目前软件中针对Qt图形界面的操作日志记录尚不成熟,未出现一种简单 的记录方法。

发明内容

有鉴于此,有必要提供一种仅需要分析Qt控件产生的事件,即可记录用户 在Qt图形界面上进行的所有鼠标和键盘操作,并形成详细的操作日志的记录方 法。

一种基于Qt图形界面软件的操作日志记录方法,所述基于Qt图形界面软件 的操作日志记录方法包括如下步骤:

S1、采集用户在界面上对Qt控件操作时,Qt界面所产生的操作事件;

S2、根据事件的内容判断Qt事件的类型,Qt操作事件的类型分为鼠标事件 和键盘事件;

S3、根据鼠标事件分析用户使用鼠标对Qt控件的操作,获得Qt控件信息并 形成鼠标操作日志数据;

S4、根据键盘事件分析用户使用键盘对Qt控件输入指令,获得Qt控件信息 并形成键盘输入日志数据;

S5、将鼠标操作日志数据和键盘输入日志数据压缩为日志数据包,并将日 志数据包进行文件记录。

一种基于Qt图形界面的软件操作日志的记录系统,其包括以下模块,

事件采集模块,用于捕获和记录根据用户在界面上对Qt控件操作时界面所 产生的Qt事件;

事件分类模块,用于根据事件的内容判断Qt事件信息的类型,Qt操作事件 的类型分为鼠标事件和键盘事件;

鼠标日志模块,用于监控用户使用鼠标对Qt控件的操作,获得Qt控件信息 并形成鼠标操作日志数据;

键盘日志模块,用于监控用户使用键盘对Qt控件输入指令,获得Qt控件信 息并形成键盘输入日志数据;

文件记录模块,用于将鼠标操作日志数据和键盘输入日志数据压缩为日志 数据包,并将日志数据包进行文件记录。

本发明所述基于Qt图形界面软件的操作日志记录方法,通过采集和分析用 户在操作Qt控件时Qt图形界面所产生的事件,获得用户在操作鼠标或键盘时所 处理Qt控件的名称、类型、位置等信息,并通过Qt控件信息得到该控件实现的 具体功能,从而为快速记录软件系统的用户操作日志提供了途径。

附图说明

图1是本发明一较佳实施例的基于Qt图形界面软件的操作日志记录方法流 程图;

图2是图1中步骤S1的子流程图;

图3是图1中步骤S2的一实施子流程图;

图4是图1中步骤S3的又一实施子流程图;

图5是图1中步骤S4的子流程图;

图6是图1中步骤S5的子流程图;

图7是本发明实施例中基于Qt图形界面软件的操作日志记录方法的工作流 程示意图;

图8是本发明一较佳实施例的基于Qt图形界面软件的操作日志记录系统的 结构框图;

图9是图8中事件产生模块的子结构框图;

图10是图8中事件分类模块的子结构框图;

图11是图8中鼠标日志模块的子结构框图;

图12是图8中键盘日志模块的子结构框图;

图13是图8中文件记录模块的子结构框图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实 施例,对本发明进行进一步详细说明,应当理解,此处所描述的具体实施例仅 仅用以解释本发明,并不用于限定本发明。

如图1所示,本发明实施例提供一种基于Qt图形界面软件的操作日志记录 方法,所述基于Qt图形界面软件的操作日志记录方法包括如下步骤:

S1、采集用户在界面上对Qt控件操作时,Qt界面所产生的操作事件;

可选的,如图2所示,所述步骤S1包括以下子步骤:

S11、用户开始运行Qt图形界面的软件时,触发计时器计时;

S12、用户在界面上对Qt控件的操作会生成操作事件,在计时超过阈值后, 对Qt操作事件进行记录监控,并停止计时;Qt操作事件包含Qt事件的操作内 容和发起该Qt事件的Qt控件。

在软件刚开始运行时,由于Qt控件的应用框架尚未完全加载而运行不稳定, 立刻就开始监控Qt事件可能会造成软件崩溃,所以需要在软件运行一段时间使 Qt框架运行稳定后再监控Qt消息。通过使用计时器计算软件的运行时间,且设 置一个稳定运行的阈值时间,当计时器到达阈值时间值时,认为Qt控件框架已 运行稳定,可以开始Qt事件的监控。

具体的,在对Qt事件信息进行记录监控时,使用以下函数:

QCoreApplication::instance->installEventFilter(this),

从而将Qt图形界面产生的所有事件重定向进行记录监控。

S2、根据事件的内容判断Qt事件信息的类型,Qt操作事件的类型分为鼠标 事件和键盘事件;

可选地,如图3所示,所述步骤S2包括以下子步骤:

S21、从Qt事件中记录三种类型的事件:鼠标点击事件、鼠标释放事件、 键盘输入事件;

S22、将鼠标点击事件、鼠标释放事件归类为鼠标事件,将键盘输入事件归 类为键盘事件;

S23、按照鼠标事件和键盘事件的划分,对发起鼠标点击事件、鼠标释放事 件的Qt控件进行第一类存储,对发起键盘输入事件的Qt控件进行第二类存储。

具体的,通过对记录监控中的Qt事件信息采用以下过滤函数,获得鼠标或 键盘操作事件。所述过滤函数为:

eventFilter(QObject*obj,QEvent*event),

其中,obj对象即为Qt控件;Event对象即为事件对象。

S3、分析用户使用鼠标对Qt控件的操作,获得Qt控件信息并形成鼠标操 作日志数据;

可选地,如图4所示,所述步骤S3包括以下子步骤:

S31、对第一类存储的Qt控件进行解析,如果解析成功,则进入步骤S32; 如果解析失败,则进入步骤S33;

S32、获取Qt控件信息,Qt控件信息包括Qt控件的类型、编码名称和Qt 控件的执行功能,以及Qt控件所处的界面路径,将获得的Qt控件信息形成鼠 标操作日志数据;

S33、获取Qt控件的类型和编码名称,生成鼠标操作异常日志数据。

S4、分析用户使用键盘对Qt控件输入指令,获得Qt控件信息并形成键盘 输入日志数据;

可选地,如图5所示,所述步骤S4包括以下子步骤:

S41、对第二类存储的Qt控件进行解析,如果解析成功,则进入步骤S42; 如果解析失败,则进入步骤S45;

S42、获取Qt控件信息,Qt控件信息包括Qt控件的类型、编码名称和Qt 控件中存储的输入值,以及Qt控件所处的界面路径;

S43、将发起此次键盘输入事件的Qt控件与发起上一次键盘输入事件的Qt 控件进行比较,判断两次键盘输入是否为对针对同一Qt控件的连续输入;如果 是,则不将获得的Qt控件信息形成键盘输入日志数据;如果不是,则进入步骤 S44;

S44、将获得的Qt控件信息形成键盘输入日志数据;

S45、获取Qt控件的类型和编码名称,生成键盘输入异常日志数据。

具体的,通过分析所记录的obj对象,获得Qt控件的类型、名称,界面路 径、Qt控件的执行功能或Qt控件中存储的输入值。方法如下:

Qt控件类型的获得方法为调用函数:

控件类型=obj->metaObject()->className()。

Qt控件名称的获得方法为调用函数:

控件名称=obj->objectName()。

进一步的,针对不同类型Qt控件的操作,应该采用不同的方法获得操作结 果,包括:

(1)QGroupBox控件,操作结果为该控件的标题信息;

(2)QPushButton、QRadioButton、QCheckBox和QToolBox控件,操作结 果为控件的文本信息;

(3)QMenu、QComboBox、QToolButton和QTabWidget控件,操作结果 为控件中所选择数据项的文本信息;

(4)QTreeWidget、QListWidget和QTableWidget控件,获取鼠标在控件上 点击的数据项,操作结果为该数据项的文本信息;

(5)QInputDialog控件,操作结果为该控件的窗口标题;(6)QLineEdit, QSpinBox和QDoubleSpinBox控件,操作结果为该控件中存储的文本信息。

其中,所述Qt控件的界面路径即为Qt控件所处在的图形界面的名称;如 果图形界面包含有子界面,则界面路径还包含Qt控件所在子界面的名称;如果 Qt控件处于某一QGroupBox控件中,则界面路径还包含Qt控件所在QGroupBox 控件的名称。

S5、将鼠标操作日志数据和键盘输入日志数据压缩为日志数据包,并将日 志数据包进行文件记录。

可选地,如图6所示,所述步骤S5包括以下子步骤:

S51、将鼠标操作日志数据、鼠标操作异常日志数据、键盘输入日志数据以 及键盘输入异常日志数据进行压缩,生成日志数据包;

S52、将日志数据包写入日志缓存区;

S53、当日志缓存区存储的日志数据大小超过阈值时,则将日志缓存区的数 据包写入日志文件,并清空日志缓存区。

通过设置日志缓冲区,使获得的日志数据没有立刻写入磁盘文件,而是先 存入内存的缓冲区中,待内存中的日志数据积累到一定程度后,再一次性将多 个日志数据写入到文件并清空缓冲区,从而防止频繁的写磁盘文件造成的系统 运行缓慢。

具体的,所述日志数据包中包括鼠标操作日志数据和鼠标操作异常日志数 据、或键盘操作日志数据和键盘输入异常日志数据、日志数据大小、系统当前 时间、计算机网络地址、操作类型、是否异常数据。

图7为本发明实施例所述的基于Qt图形界面软件的操作日志记录方法的工 作流程示意图。详细流程如下所示:

步骤1.1:用户开始运行Qt图形界面的软件时,开始计时;然后进入步骤 1.2。

步骤1.2:判断系统运行的时间是否超过设定阈值,如果超过;进入步骤1.3。

步骤1.3:对Qt事件进行采集,并停止计时,进入步骤1.4。

步骤1.4:从Qt事件信息中记录三种类型的事件:鼠标点击事件、鼠标释 放事件、键盘输入事件;进入步骤1.5。

步骤1.5:将鼠标点击事件、鼠标释放事件归类为鼠标事件;进入步骤1.7。

步骤1.6:将键盘输入事件归类为键盘事件;进入步骤1.10。

步骤1.7:对第一类存储的Qt控件进行解析;进入步骤1.8。

步骤1.8:如果解析成功,获取Qt控件信息,Qt控件信息包括Qt控件的类 型、编码名称和Qt控件的执行功能,以及Qt控件所处的界面路径,将获得的 Qt控件信息形成鼠标操作日志数据;进入步骤1.15。

步骤1.9:如果解析失败,获取Qt控件的类型和编码名称,生成鼠标操作 异常日志数据,进入步骤1.15。

步骤1.10:对第二类存储的Qt控件进行解析,进入步骤1.11。

步骤1.11:如果解析成功,获取Qt控件信息,Qt控件信息包括Qt控件的 类型、编码名称和Qt控件中存储的输入值,以及Qt控件所处的界面路径;

步骤1.12:将发起此次键盘输入事件的Qt控件与发起上一次键盘输入事件 的Qt控件进行比较,判断两次键盘输入是否为对针对同一Qt控件的连续输入; 进入步骤1.13。

步骤1.13:如果是,不将获得的Qt控件信息形成键盘输入日志数据;如果 不是,将获得的Qt控件信息形成键盘输入日志数据;进入步骤1.15。

步骤1.14:如果解析失败,获取Qt控件的类型和编码名称,生成键盘输入 异常日志数据;进入步骤1.15。

步骤1.15:将鼠标操作日志数据、鼠标操作异常日志数据、键盘输入日志 数据以及键盘输入异常日志数据进行压缩,生成日志数据包;进入步骤1.16。

步骤1.16:将日志数据包写入日志缓存区;进入步骤1.17。

步骤1.17:当日志缓存区存储的数据大小超过阈值时,则将日志缓存区的 数据包写入日志文件,并清空日志缓存区;完成操作日志的记录。

本发明公开一种基于Qt图形界面软件的操作日志记录方法及系统,通过对 用户在Qt图形界面上对Qt控件操作而产生的操作事件进行采集和处理,首先 将Qt操作事件的类型分为鼠标事件和键盘事件;然后根据事件的信息分析用户 使用鼠标对Qt控件的操作,获得Qt控件信息并形成鼠标操作日志数据;根据 监控用户使用键盘对Qt控件输入指令,获得Qt控件信息并形成键盘输入日志 数据;最后将鼠标操作日志数据和键盘输入日志数据压缩为日志数据包,并将 日志数据包进行文件记录。因此,本发明通过采集和分析用户在操作Qt控件时 Qt图形界面所产生的事件,获得用户在操作鼠标或键盘时所处理Qt控件的名称、 类型、位置等信息,并通过Qt控件信息得到该控件实现的具体功能,从而为快 速记录软件系统的用户操作日志提供了途径。

如图8所示,本发明还提供一种基于Qt图形界面的软件操作日志的记录系 统,其包括以下模块,

事件采集模块,用于捕获和记录用户在界面上对Qt控件操作时界面产生的 Qt事件,事件分类模块,用于根据事件的内容判断Qt事件信息的类型,Qt操 作事件的类型分为鼠标事件和键盘事件;

鼠标日志模块,用于监控用户使用鼠标对Qt控件的操作,获得Qt控件信 息并形成鼠标操作日志数据;

键盘日志模块,用于监控用户使用键盘对Qt控件输入指令,获得Qt控件 信息并形成键盘输入日志数据;

文件记录模块,用于将鼠标操作日志数据和键盘输入日志数据压缩为日志 数据包,并将日志数据包进行文件记录。

其中,如图9所示,事件采集模块中包含以下单元:

触发计时单元,用于在用户开始运行Qt图形界面的软件时,触发计时器计 时;

记录监控单元,用于在用户在界面上对Qt控件的操作生成Qt事件,在计 时超过阈值后,对Qt事件进行记录监控,并停止计时;Qt操作事件包含Qt事 件的操作内容和发起该事件的Qt控件。

其中,如图10所示,事件分类模块中包含以下单元:

类型捕获单元,用于从Qt事件信息中记录三种类型的事件:鼠标点击事件、 鼠标释放事件、键盘输入事件;

分类规整单元,用于将鼠标点击事件、鼠标释放事件归类为鼠标事件,将 键盘输入事件归类为键盘事件;

控件存储单元,用于按照鼠标事件和键盘事件的划分,对发起鼠标点击事 件、鼠标释放事件的Qt控件进行第一类存储,对发起键盘输入事件的Qt控件 进行第二类存储。

其中,如图11所示,鼠标日志模块中包含以下单元:

第一类控件解析单元,用于对第一类存储的Qt控件进行解析,如果解析成 功,则将信息发送给日志生成单元;如果解析失败,则将信息发送给异常日志 生成单元;

鼠标日志生成单元,用于获取Qt控件信息,Qt控件信息包括Qt控件的类 型、编码名称和Qt控件的执行功能,以及Qt控件所处的界面路径,将获得的 Qt控件信息形成鼠标操作日志数据。

鼠标异常日志生成单元,用于获取Qt控件的类型和编码名称,生成鼠标操 作异常日志数据,

其中,如图12所示,键盘日志模块中包含以下单元:

第二类控件解析单元,用于对第二类存储的Qt控件进行解析,如果解析成 功,则将信息发送给信息获取单元;如果解析失败,则将信息发送给键盘异常 日志生成单元;

信息获取单元,用于获取Qt控件信息,Qt控件信息包括Qt控件的类型、 编码名称和Qt控件中存储的输入值,以及Qt控件所处的界面路径;

控件比较单元,用于将发起此次键盘输入事件的Qt控件与发起上一次键盘 输入事件的Qt控件进行比较,判断两次键盘输入是否为对针对同一Qt控件的 连续输入;如果是,则不将获得的Qt控件信息形成键盘输入日志数据;如果不 是,则将信息发送给键盘日志生成单元;

键盘日志生成单元,用于将获得的Qt控件信息形成键盘输入日志数据;

键盘异常日志生成单元,用于获取Qt控件的类型和编码名称,生成键盘输 入异常日志数据。

其中,如图13所示,文件记录模块中包含以下单元:

日志压缩单元,用于将鼠标操作日志数据、鼠标操作异常日志数据、键盘 输入日志数据以及键盘输入异常日志数据进行压缩,生成日志数据包;

日志缓存单元,用于将日志数据包写入日志缓存区;

日志文件写入单元,用于当日志缓存区存储的日志数据大小超过阈值时, 则将日志缓存区的数据包写入日志文件,并清空日志缓存区。

以上装置实施例与方法实施例是一一对应的,装置实施例简略之处,参见 方法实施例即可。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是 与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例 的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为 了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能性一般性地 描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决 于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用 来使用不同方法来实现所描述的功能,但是这种实现不应超过本发明的范围。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处 理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机储存器、 内存、只读存储器、电可编程ROM、电可檫除可编程ROM、寄存器、硬盘、 可移动磁盘、CD-ROM、或技术领域内所公知的任意其他形式的存储介质中。

上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述 的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本 领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保 护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号