Qt中如何定制个性化菜单
展开全部
一个menu的样式是由其上边的菜单项决定的,所以要个性化定制菜单,其实就是要个性化定制各个菜单项。在Qt中菜单项是QAction类,但是如果直接用它的话:其样式是由系统所决定的,我们只能在上边写一些字符或者再加一个Icon. 但是有时候我们需要定制一个个性化的menu。比如:你的App整体风格为蓝色调,但是在Qt for symbian上系统菜单项却是黑色的,Qt for Windows是灰色的,显然这样就不搭配了,所以这才需要我们去个性化它。 个性化的最简单方式就是给菜单项上边刷一张图片。欲达到的效果为: 1:当鼠标hover移动进入该菜单项区域时:其应变成另外一张背景图片。2:当鼠标hover移出该菜单选项时:其恢复原先的背景图片。3:当mousePress时:换成另一张图片.4:当mouseRelease时:换回原先的背景图片,并且隐藏菜单本身。 由上分析可知:个性化定制一个菜单项时:至少要准备两张图片,一张用于平时状态,一种用于hover-in和mouse-press状态。--------------------------------------------------------------------------------------------------------------------------------- 对标准的菜单项控件QAction,由于其并 非继承于QWidget,所以我们无法再上边绘制image。只能调用它自身的函数来摆个icon和写点字符,这显然达不到我们的要求。 为了实现个性话定制菜单项,Qt提供了另外一个类:QWidgetAction。亦即:普通的菜单项我们可以用QAction实现.希望个性化定制的菜单项我们是用QWidgetAction来实现。 而它实现个性化定制的方法是:它本身可以充当一个中间“容器”,从而在其上摆一个普通的QWidget,这样显示在用户面前的就是这个其上的widget。对于这个widget而言:我们完全可以自由定制,从而间接表现出对菜单项的定制。 由上知:我们所谓的个性化定制其实就是在先创建一个指定样式的QWidget对象;而后将其放到QWidgetAction上;最后将创建好的QWidgetAction对象放到菜单面板中!!------------------------------------------------------------------------------------------------------------------------ 那么:照上边所说,这里还有一个问题需要解决:那就是其上边这个普通widget的parent父亲是谁?我们不可能将其指定为QWidgetAction,毕竟它并不继承于QWidget,无法作为parent。 其实这个普通窗口的父窗口我们是直接指定为:存放这个菜单项的菜单QMenu。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询