CN106815029A - 一种使用Qt进行二维图层的绘制及事件处理方法 - Google Patents
一种使用Qt进行二维图层的绘制及事件处理方法 Download PDFInfo
- Publication number
- CN106815029A CN106815029A CN201710059728.5A CN201710059728A CN106815029A CN 106815029 A CN106815029 A CN 106815029A CN 201710059728 A CN201710059728 A CN 201710059728A CN 106815029 A CN106815029 A CN 106815029A
- Authority
- CN
- China
- Prior art keywords
- layer
- event
- carries out
- queue
- dimentional
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- User Interface Of Digital Computer (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明公开了一种使用Qt进行二维图层的绘制及事件处理方法,该方法提炼出不同基本图形绘制的条件,结合手势操作,简化绘制过程;并对绘制完成的图层提供状态管理,绘制多个且有重叠区域的图形时,本方法首先对选择点进行坐标映射,实现全局坐标系转换成图层内部坐标系,再按照队列创建顺序逆向交由图层,图层依据本身类型自动调用不同位置关系判定算法,最终实现状态切换;同时支持对产生的系统事件进行状态跟踪,将产生的事件进行图层间的传递,由图层判断事件是否需要处理,直至事件被处理或者被忽略,此时跟踪状态结束。该方法有效的解决了Qt二维图层绘制过程繁琐、事件传播不穿透的问题。
Description
技术领域
本发明涉及计算机图层处理领域,特别是涉及一种使用Qt进行二维图层的绘制及事件处理方法。
背景技术
Qt提供了两种绘图机制,一种是GraphicsView机制,另外一种是基于QWidget窗口部件自定义绘制图形。前者已实现了图层选择、事件处理、状态管理等功能,但后者并未提供,此方法主要针对后者在图形绘制上进行功能的强化。
QWidget窗口是一种矩形、透明的窗口图层,可对其编程实现图形绘制、事件处理等功能。但在实际的应用中会出现如下几个问题(如图1所示):
一、图层绘制:在使用QWidget进行图层绘制时,其本身只提供了绘制的通用函数,但未指定绘制的过程,这样限制了用户绘制图形的尺寸,位置。
二、图层选择:在蓝色矩形图层中,只有椭圆对用户可见。因QWidget会处理其区域内的所有事件,因此当点击空白区域时,蓝色图层依然会被选中,这就造成了选择上的错误。
三、事件传播:屏幕上新建蓝色矩形图层并绘制椭圆,其与绿色的图层产生区域重合。因蓝色矩形是透明,用户本想点击重叠区域选择绿色图层进行操作,但因遮挡原因,蓝色矩形会拦截传播向绿色矩形的事件,造成绿色图层无法选中。
发明内容
本发明主要解决的技术问题是提供一种使用Qt进行二维图层的绘制及事件处理方法,能够有效地解决Qt二维图层绘制过程繁琐、事件传播不穿透的问题。
为解决上述技术问题,本发明采用的一个技术方案是:提供一种使用Qt进行二维图层的绘制及事件处理方法,主要包括如下步骤:
一、图层绘制:对绘制的图层进行分类,对每种类型绘制时所需要提供的条件进行整理,绘制完成之后,图层自动进行尺寸的调整,将尺寸调整到可以最小包围绘制图形,然后将此图形加入到图层绘制队列,进行托管管理;
二、图层选择:在图层范围内点击任意部分激活图层;事件产生后,由队列管理模块将事件按照入队顺序反方向交由图层,图层在接收到事件后,自动将事件产生的位置转换成自身坐标值;图层依照自身的类型,加入旋转角度,判断绘制区域是否包含此点;在处理后,如果事件点位置在绘制图层区域之内,图层会进行选中,方便下步操作,否则事件忽略处理;
三、事件传播:管理者从事件队列里取出一事件,查看此事件源,依照图层唯一标识在队列中定位此图层,之后会依次地将事件交由在此图层之前创建的图层进行处理,并对此事件进行跟踪;如果图层处理了该事件,那么传播过程结束;若图层不处理事件,管理者会将事件交由下一个图层,如果所有图层都不进行处理,那么管理者将事件交由系统自行处理,此时单个事件传播过程结束,管理者会继续从事件队列中取出处理,直至事件处理完成;
四、队列管理:队列管理模块保存了所创建的所有图层,依照图层唯一的ID进行快速访问,其掌握着从图层创建后所有的状态。
优选的,步骤一中的图层分类主要分为:正方形、矩形、圆角矩形、圆、椭圆、扇形、户型、多边形、文字。
优选的,步骤四中的图层创建后的状态主要包括:图层选中、图层属性更改、图层删除。
本发明的有益效果是:本发明提炼出不同基本图形绘制的条件,结合手势操作,简化绘制过程;并对绘制完成的图层提供状态管理;该方法有效的解决了Qt二维图层绘制过程繁琐、事件传播不穿透的问题。
附图说明
图1是现有技术中基于QWidget窗口部件自定义绘制图形的原理示意图;
图2是本发明一种使用Qt进行二维图层的绘制及事件处理方法中事件传播流程图。
具体实施方式
下面结合附图对本发明的较佳实施例进行详细阐述,以使本发明的优点和特征能更易于被本领域技术人员理解,从而对本发明的保护范围做出更为清楚明确的界定。
本发明实施例包括如下步骤:
一、图层绘制:对绘制的图层进行分类,对每种类型绘制时所需要提供的条件进行整理,绘制完成之后,图层自动进行尺寸的调整,将尺寸调整到可以最小包围绘制图形,然后将此图形加入到图层绘制队列,进行托管管理;
二、图层选择:在图层范围内点击任意部分激活图层;事件产生后,由队列管理模块将事件按照入队顺序反方向交由图层,图层在接收到事件后,自动将事件产生的位置转换成自身坐标值;图层依照自身的类型,加入旋转角度,判断绘制区域是否包含此点;在处理后,如果事件点位置在绘制图层区域之内,图层会进行选中,方便下步操作,否则事件忽略处理;
三、事件传播:管理者从事件队列里取出一事件,查看此事件源,依照图层唯一标识在队列中定位此图层,之后会依次地将事件交由在此图层之前创建的图层进行处理,并对此事件进行跟踪;如果图层处理了该事件,那么传播过程结束;若图层不处理事件,管理者会将事件交由下一个图层,如果所有图层都不进行处理,那么管理者将事件交由系统自行处理,此时单个事件传播过程结束,管理者会继续从事件队列中取出处理,直至事件处理完成;
四、队列管理:队列管理模块保存了所创建的所有图层,依照图层唯一的ID进行快速访问,其掌握着从图层创建后所有的状态。
进一步的,步骤一中的图层分类主要分为:正方形、矩形、圆角矩形、圆、椭圆、扇形、户型、多边形、文字。如当前图形库不满足需求时,也留有适当的接口,进行扩展。
进一步的,步骤二图层选择,QWidget图层是矩形,因此只要在其矩形范围内点击任意部分都可以激活图层。然而有的图层形状不是矩形,如圆、椭圆、弧、不规则图形等,在处理这些图形选择时,就不能简单的将其量化成矩形处理。如面对简单的圆形会计算点击的位置和圆心距离与半径进行比对;面对弧形时,会结合旋转角度,以及点击容差值进行计算;复杂的如不规则的多边形,会利用跨积算法等更精确的判定。
图2 是队列处理抛出事件的流程图:鼠标对某个图层进行操作,如果鼠标的位置没在当前图层绘制的图形路径上,当前图层会将鼠标点击的位置映射成全局值之后,并加入自身的信息一并包装成事件抛给队列管理者。队列管理者接收到事件之后,解析事件并获取有关抛出图层和事件的描述信息,从当前图层队列中找出抛出图层所在的索引,然后从此索引开始,依次取出图层。调用图层通用的接口,判断所取出的图层是包含了当前的鼠标点,当所取出的图层包含了当前鼠标,那么此图层会根据鼠标的类型,如单击、双击、移动,来分别进行响应处理。当处理成功后,通知队列管理者终止当前事件的传播。如果不包含,则管理者会继续取出下一个图层。重复上面的过程,直到有图层处理当前事件,或者没有图层处理该事件而结束。当没有图层处理该事件,队列管理者会将此事件交由系统进行处理,并等待下一次事件到来。
进一步的,队列管理模块保存了所创建的所有图层,可以依照图层唯一的ID进行快速访问,其掌握着从图层创建后所有的状态,如:图层选中、图层属性更改、图层删除等。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (3)
1.一种使用Qt进行二维图层的绘制及事件处理方法,其特征在于,主要包括如下步骤:
一、图层绘制:对绘制的图层进行分类,对每种类型绘制时所需要提供的条件进行整理,绘制完成之后,图层自动进行尺寸的调整,将尺寸调整到可以最小包围绘制图形,然后将此图形加入到图层绘制队列,进行托管管理;
二、图层选择:在图层范围内点击任意部分激活图层;事件产生后,由队列管理模块将事件按照入队顺序反方向交由图层,图层在接收到事件后,自动将事件产生的位置转换成自身坐标值;图层依照自身的类型,加入旋转角度,判断绘制区域是否包含此点;在处理后,如果事件点位置在绘制图层区域之内,图层会进行选中,方便下步操作,否则事件忽略处理;
三、事件传播:管理者从事件队列里取出一事件,查看此事件源,依照图层唯一标识在队列中定位此图层,之后会依次地将事件交由在此图层之前创建的图层进行处理,并对此事件进行跟踪;如果图层处理了该事件,那么传播过程结束;若图层不处理事件,管理者会将事件交由下一个图层,如果所有图层都不进行处理,那么管理者将事件交由系统自行处理,此时单个事件传播过程结束,管理者会继续从事件队列中取出处理,直至事件处理完成;
四、队列管理:队列管理模块保存了所创建的所有图层,依照图层唯一的ID进行快速访问,其掌握着从图层创建后所有的状态。
2.根据权利要求1所述的一种使用Qt进行二维图层的绘制及事件处理方法,其特征在于,步骤一中的图层分类主要分为:正方形、矩形、圆角矩形、圆、椭圆、扇形、户型、多边形、文字。
3.根据权利要求1所述的一种使用Qt进行二维图层的绘制及事件处理方法,其特征在于,步骤四中的图层创建后的状态主要包括:图层选中、图层属性更改、图层删除。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710059728.5A CN106815029B (zh) | 2017-01-24 | 2017-01-24 | 一种使用Qt进行二维图层的绘制及事件处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710059728.5A CN106815029B (zh) | 2017-01-24 | 2017-01-24 | 一种使用Qt进行二维图层的绘制及事件处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106815029A true CN106815029A (zh) | 2017-06-09 |
CN106815029B CN106815029B (zh) | 2019-10-22 |
Family
ID=59111568
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710059728.5A Active CN106815029B (zh) | 2017-01-24 | 2017-01-24 | 一种使用Qt进行二维图层的绘制及事件处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106815029B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109582429A (zh) * | 2018-12-07 | 2019-04-05 | 上海航天电子通讯设备研究所 | 一种基于qt平台的圆形p显空情显示方法及装置 |
CN109584341A (zh) * | 2018-11-15 | 2019-04-05 | 腾讯科技(深圳)有限公司 | 在画板上绘图的方法及装置 |
CN110471658A (zh) * | 2019-07-10 | 2019-11-19 | 成都摹客科技有限公司 | 一种图层的选择方法、系统及计算机存储介质 |
CN112204619A (zh) * | 2019-04-23 | 2021-01-08 | 华为技术有限公司 | 处理图层的方法和装置 |
CN116110072A (zh) * | 2023-04-12 | 2023-05-12 | 江西少科智能建造科技有限公司 | 一种cad图纸解析方法及系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102567025A (zh) * | 2011-12-29 | 2012-07-11 | 深圳Tcl新技术有限公司 | 基于qt的2d/3d的图形绘制方法及装置 |
CN105608723A (zh) * | 2015-12-18 | 2016-05-25 | 长城信息产业股份有限公司 | 一种国产计算机平台下Qt画图性能的优化方法 |
CN105739984A (zh) * | 2016-01-29 | 2016-07-06 | 中国人民解放军63811部队 | 一种基于Qt的高可维护性数据显示框架 |
CN106326101A (zh) * | 2015-07-06 | 2017-01-11 | 北京华大九天软件有限公司 | 一种基于qt的应用程序自动化测试方法 |
-
2017
- 2017-01-24 CN CN201710059728.5A patent/CN106815029B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102567025A (zh) * | 2011-12-29 | 2012-07-11 | 深圳Tcl新技术有限公司 | 基于qt的2d/3d的图形绘制方法及装置 |
CN106326101A (zh) * | 2015-07-06 | 2017-01-11 | 北京华大九天软件有限公司 | 一种基于qt的应用程序自动化测试方法 |
CN105608723A (zh) * | 2015-12-18 | 2016-05-25 | 长城信息产业股份有限公司 | 一种国产计算机平台下Qt画图性能的优化方法 |
CN105739984A (zh) * | 2016-01-29 | 2016-07-06 | 中国人民解放军63811部队 | 一种基于Qt的高可维护性数据显示框架 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109584341A (zh) * | 2018-11-15 | 2019-04-05 | 腾讯科技(深圳)有限公司 | 在画板上绘图的方法及装置 |
CN109584341B (zh) * | 2018-11-15 | 2022-11-25 | 腾讯科技(深圳)有限公司 | 在画板上绘图的方法及装置 |
CN109582429A (zh) * | 2018-12-07 | 2019-04-05 | 上海航天电子通讯设备研究所 | 一种基于qt平台的圆形p显空情显示方法及装置 |
CN112204619A (zh) * | 2019-04-23 | 2021-01-08 | 华为技术有限公司 | 处理图层的方法和装置 |
CN110471658A (zh) * | 2019-07-10 | 2019-11-19 | 成都摹客科技有限公司 | 一种图层的选择方法、系统及计算机存储介质 |
CN116110072A (zh) * | 2023-04-12 | 2023-05-12 | 江西少科智能建造科技有限公司 | 一种cad图纸解析方法及系统 |
CN116110072B (zh) * | 2023-04-12 | 2023-08-15 | 江西少科智能建造科技有限公司 | 一种cad图纸解析方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN106815029B (zh) | 2019-10-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106815029A (zh) | 一种使用Qt进行二维图层的绘制及事件处理方法 | |
US9110574B2 (en) | Augmented I/O for limited form factor user-interfaces | |
WO2019109485A1 (zh) | 基于eCharts工具的图表制作方法、装置、设备及介质 | |
US8952991B1 (en) | Selective zoom response behavior in computing systems | |
US5564004A (en) | Method and system for facilitating the selection of icons | |
CN105988860B (zh) | 执行应用程序的方法及移动装置 | |
US10627980B2 (en) | Organization mode support mechanisms | |
US20060085758A1 (en) | Desktop alert management | |
DE112013002412T5 (de) | Vorrichtung, Verfahren und grafische Benutzeroberfläche zum Bereitstellen von Rückmeldung für das Wechseln von Aktivierungszuständen eines Benutzerschnittstellenobjekts | |
JPH10508403A (ja) | 表示的グラフの操作によるデータ変更用の方法および装置 | |
CN103577030B (zh) | 浏览器窗口界面展现方法及系统 | |
DE102013218379A1 (de) | Erkennen und Verarbeiten einer unbeabsichtigten Berührung eines Touchscreens | |
CN103176712B (zh) | 一种图像放大显示方法和装置 | |
CN112947923B (zh) | 对象编辑方法、装置和电子设备 | |
CN109725958A (zh) | 对资源管理器管理的文件进行处理的方法及装置 | |
WO2020233063A1 (zh) | 智能化路径规划方法、装置及计算机可读存储介质 | |
CN108509599A (zh) | 一种数据模型的创建方法及装置 | |
CN112785714A (zh) | 点云实例标注方法及装置、电子设备和介质 | |
CN107391914B (zh) | 一种参数显示方法、装置及设备 | |
CN112148169B (zh) | 标识显示控制方法、装置及电子设备 | |
CN106445337A (zh) | 聚光灯效果的实现方法和装置 | |
JP2000089886A (ja) | 仮想多面体を用いたデスクトップ管理システム及び方法 | |
CN109241727B (zh) | 权限设置方法及装置 | |
CN109189537A (zh) | 页面信息的动态显示方法、计算设备及计算机存储介质 | |
CN108323199A (zh) | 一种用户界面的显示方法、装置及用户界面 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |