查看完整版本: [-- Qt应用程序所有界面实现,右键返回功能 --]

QTCN开发网 -> Qt嵌入式开发 -> Qt应用程序所有界面实现,右键返回功能 [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

misgn 2017-06-21 14:58

Qt应用程序所有界面实现,右键返回功能

目前项目有一个需求,需要90%的界面实现,右键返回的功能。请教一下,大家的想法。
如何去实现,总不能每一个界面类都去重现 mouseEvent 把?

笑颜 2017-06-21 15:38
C++继承机制不就是为了减少代码而生的吗?组织好继承关系,就能很好的提高代码利用率。比如,你如果想所有窗口都能鼠标移动,可以提炼一个移动的窗口父类,需要的直接继承就行了,注意一个菱形继承的问题。

never_forget 2017-06-21 16:24
笑颜:C++继承机制不就是为了减少代码而生的吗?组织好继承关系,就能很好的提高代码利用率。比如,你如果想所有窗口都能鼠标移动,可以提炼一个移动的窗口父类,需要的直接继承就行了,注意一个菱形继承的问题。 (2017-06-21 15:38) 

楼主正解~~~

misgn 2017-06-22 09:17
笑颜:C++继承机制不就是为了减少代码而生的吗?组织好继承关系,就能很好的提高代码利用率。比如,你如果想所有窗口都能鼠标移动,可以提炼一个移动的窗口父类,需要的直接继承就行了,注意一个菱形继承的问题。 (2017-06-21 15:38) 

谢谢,经过测试的可以的。
界面画多了,导致忘记 C++ 老本行。流汗!

misgn 2017-06-22 09:25
昨天经过技术群,文档得到了以下三种方案。

1. 注册全局事件过滤器
2. 你写个基类,然后继承不就行了么。
3. 下一个继承与`QApplication`的`Event`事件,然后监测



第二种确定是可以用,但会和子窗体中的一些控件冲突,例如:你继承基类,然后子类中存在一个QLIneEdit,如果在LineEdit中进行右键事件,右键事件就会被QLineEdit给获取,处理,然后父窗体就无法处理右键事件了。

自强不吸 2017-06-22 16:42
misgn:昨天经过技术群,文档得到了以下三种方案。
1. 注册全局事件过滤器
2. 你写个基类,然后继承不就行了么。
3. 下一个继承与`QApplication`的`Event`事件,然后监测
....... (2017-06-22 09:25) 

那你就得把第一条和第二天结合起来啊

misgn 2017-06-30 16:42
自强不吸:那你就得把第一条和第二天结合起来啊 (2017-06-22 16:42) 

目前仅通过第二条,已实现右键返回。
但右键的事件可能会被子控件给接受并处理掉。
但已经满足目前的需求。


查看完整版本: [-- Qt应用程序所有界面实现,右键返回功能 --] [-- top --]



Powered by phpwind v8.7 Code ©2003-2011 phpwind
Gzip disabled