Qt And MFC Mouse Over Tips
Qt鼠标提示分析说明
关于鼠标停留在控件上面,显示提示内容的方法. 对于Qt来说, Qt的某一个控件类, 如果属于GUI的, 那么这个控件类会有一个setToolTip(QString text)的方法. 顾名思义, 这个方法就是设置鼠标停留显示内容的.也可能一开始, 我就接触的Qt, 觉得这个方法很人性化. 感觉也是非常符合设计常理的.
MFC鼠标提示分析说明
可是,当我了解到MFC的时候, MFC框架却是提供了一个专门的CToolTipCtrl类, 来统一管理鼠标的提示.按照MFC的思想, 它把鼠标提示的任务, 规划在了单独的一个模块儿中. 用的时候,感觉还是灰常的别扭的.如果哪个控件想显示鼠标提示内容, 那么通过调用这个类的方法, 把自己的ID和想要显示的内容, 设置给这个类.
QT And MFC 对比分析
同一个功能需求, 同一个设计语言. 不同的框架, 会采用不同的设计理念, 不同的设计方法.
对于以上2个框架的设计差别. Qt把这个功能通过一个方法, 渗透进每一个GUI的类里面. 如果, 这个类的一个对象想实现这个功能, 那么直接通过对象调用这个方法,即可. 也就是说, 通过Qt, 实现这个功能, 不用考虑这个功能会不会破坏我的模块儿. 因为没有其他东西的加入. 都是属于控件类自己的东西. 添加修改不影响其他地方, 所以不必担心会不会破坏现有的应用程序的模块儿.至少在这一点上面, 我觉得是优势所在.即使Qt 自己也有一个QToolTip的类, 但是该类的功能是设计鼠标提示的样式的.一般鼠标提示都属于跟随系统的默认样式, 不会使用到这个类.
那么再来思考MFC, MFC是单独提供了一个CToolTipCtrl类来管理所有的鼠标提示.这是什么思想? 在我看来,这是一种系统思想.站在系统的角度, 鼠标提示, 这是一个模块儿, 我要使用一个模块儿, 来管理所有需要鼠标提示的部分. 在使用MFC的解决方法的时候, 我需要考虑, 这个CToolTipCtrl类的对象, 放在哪里? 如果其他模块也使用了这个类, 我是否需要把指针传递到这个模块儿. 如果,有多个这样对象, 也是可以的吗?总之, 使用MFC的时候, 它让我考虑了很多东西. 虽然说, 这个类不复杂, 但是, 我在只想实现某个功能的时候, Qt给我了一个对象的方法, 而MFC给我了一个类, 你说, 是了解自己的方法快一些, 还是了解一个类快一些?
代码实现
通过对比分析, 我是比较倾向于Qt的这种自我的设计思想. 这也体现了Qt的优雅和简洁.
Qt实现鼠标提示
直接通过对象调用setToolTip(QString text)的方法即可, 如果想美化样式, 可以查看QToolTip的类说明.如此的简洁优雅.
MFC显示鼠标提示
这个方法是网上他人的, 本人确实没有系统的学习MFC, 只是基础而已.上面的分析, 如果错误,还请留言指正.
CToolTipCtrl m_Mytip; ///< 对话框对应的类中添加对象
/** OnInitDialog 函数中 */
m_Mytip.Create(this);
m_Mytip.AddTool( GetDlgItem(IDC_BUTTON0), "tool tip text" );
m_Mytip.AddTool( GetDlgItem(IDC_BUTTON1), "tool tip text" );
m_Mytip.AddTool( GetDlgItem(IDC_BUTTON2), "tool tip text" );
m_Mytip.SetDelayTime(200); //设置延迟
m_Mytip.SetTipTextColor( RGB(0,0,255) ); //设置提示文本的颜色
m_Mytip.SetTipBkColor( RGB(255,255,255)); //设置提示框的背景颜色
m_Mytip.Activate(TRUE); //设置是否启用提示
/** 然后在类向导中添加PreTranslateMessage消息响应函数 */
BOOL CXXXDlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
if(pMsg->message==WM_MOUSEMOVE)
m_Mytip.RelayEvent(pMsg);
return CDialog::PreTranslateMessage(pMsg);
}
(⊙o⊙)…, 我怎么感觉这么复杂...
总结
对于Qt来说, 我觉得Qt把常用的功能封装的十分的简洁. 如果要是想实现复杂的功能, 还是需要一番功夫的. 而MFC是吧简单的和复杂的统一在一起了. 就单纯这个鼠标提示来说. 两者的差距还是很大的.我个人还是倾向于Qt.
Qt And MFC Mouse Over Tips的更多相关文章
- Qt And MFC UI Layout
界面布局 起初,计算机的交互是通过输入的代码进行的, 慢慢的有了图形之后, 就开始了图形界面的交互. 目前来说还有语音交互, 视频交互等多媒体的交互. 不管哪一种交互, 最终在计算机的角度都是信号的输 ...
- 用QT 还是MFC ? (转)
我曾经使用过QT和MFC来开发过软件,我想和大家分享我使用他们时所体会的不同之处. 我并非一个职业作家,这篇文章可能看起来不如专业的杂志和网站上的那么条理清晰.但是,我在这里是用我自己的语言来表达我自 ...
- QT和MFC的差别
QT和MFC的差别 在使用MFC之前就已经使用Qt这个事实可能影响了我的客观性. (MFC效率较高,但大量的Windows API和消息机制使得其较难理解,不易用:QT封装较好,易用且跨平台,但效率较 ...
- 用QT 还是MFC
转自:用QT 还是MFC ? ----不要在跟自己无关的事情上浪费时间 - CSDN博客 http://blog.csdn.net/sergery/article/details/8038897 我 ...
- Qt VS MFC
最近用了一段时间Qt,觉得网上这篇文章讲述Qt与MFC之间的区别很到位,分享一下. ----------------------------------原文---------------------- ...
- MFC中控制Tips的显示 - lingyun1120
from: http://www.cnblogs.com/lingyun1120/archive/2011/11/09/2243279.html MFC中为ToolTips生成了一个类CToolTi ...
- 一些VS2013下使用QT和MFC的错误解决方案
http://blog.csdn.net/lovejiayang/article/details/51853191
- Contents Of My Blogs
C++ How To Use Goto? Preprocessing Directive std::array std::deque std::forward_list std::map std::m ...
- MFC和Qt优缺点
在网上看到的,拿来和大家一起讨论下. 我曾经使用过来开发过软件,我想和大家分享我使用他们时所体会的不同之处. 我并非一个职业作家,这篇文章可能看起来不如专业的杂志和网站上的那么条理清晰.但是,我在这里 ...
随机推荐
- react native 中webview内的点击事件传到外部原生调用
先说一下我使用webview的时候遇到的一个功能需求 是这样的,上图中的这个页面是用h5做的,但是由于点击"我的优惠劵"是需要跳转到我原生的页面,也就是说我需要获得这个h5提供的点 ...
- Python 格式化输出
转载 今天写程序又记不清格式化输出细节了--= =索性整理一下. 注意: 与C/C++ 不同的是这里括号后面不需要加' , '号. python print格式化输出. 1. 打印字符串 print ...
- mysql优化笔记之分页
过年闲得蛋疼,于是看看mysql优化,看了网上好多关于分页的优化方法,但是呢,我亲自试上一把的时候,没有出现他们说的现象...难道是我的机器问题么? 下面看看我的实践记录,希望看到的加入进来交流一下O ...
- php安装程序
php安装程序 制作原理和步骤 检查目录或文件权限 修改或者添加配置文件 检查配置文件的正确性 导入数据库 锁定或删除安装文件 用到函数 iswritable("data/config.ph ...
- linux菜鸟日记(3)
Centos7利用shell编辑一串 一键完成一些基础配置的代码: 在这串shell代码中我实现了 IP地址的配置.光盘的挂载.本地yum源的搭建.一些服务的安装例如 httpd. php. ntp ...
- 【验证】C# dataSource 的记忆功能
做项目时遇到的问题:dataSource被ComboBox引用过一次,会记忆最后一次选中的值,然后下一次再用时这个值会直接呈现在ComboBox中. 为验证是dataSource还是ComboBox自 ...
- bash 源码分析
下载解压 bash-3.2 编译bash export LFS=/my/soft/mylfs tar xvf $LFS/sources/bash-3.2.tar.gz -C $LFS/sources/ ...
- jQuery中设置form表单中action的值的方法
下面介绍在jQuery中设置form表单中action的值的方法. $("#myFormId").attr("action", "userinfo.s ...
- 简单谈谈如何利用h5实现音频的播放
作者:白狼 出处:http://www.manks.top/article/h5_audio本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律 ...
- 【转】stopPropagation, preventDefault 和 return false 的区别
因为有父, 子节点同在, 因为有监听事件和浏览器默认动作之分. 使用 JavaScript 时为了达到预期效果经常需要阻止事件和动作执行. 一般我们会用到三种方法, 分别是 stopPropagat ...