linux 下QT Qmenu不显示

linux 下QT Qmenu不显示,第1张

当初有个特殊的需求, 要求菜单的周边带几个像素的阴影, 琢磨了半天, 用QMenu做不来, 就干脆自己用窗口写一个

然而怎么让菜单消失却非常麻烦

1. 点击菜单项

2. 点击其他地方

3. 被其他窗口遮挡

4. 按键啊

然后用判断焦点的方法吭哧吭哧写了, 做法类似d出一个自动关闭的窗口.

但是菜单是可以多级的, 这就造成非常恶心的焦点传递. 虽然最终处理好了(代码好恶心- -!, 自己看得都想吐)

可惜天不遂人愿, 但其他窗口一起抢焦点的时候, 我的菜单就变成奇葩了. 想来想去也想不出解决方案来

终于还是看Qt的源码把.

看完之后, 豁然开朗, 想想自己以前怎么那么2呢. 简直是2到家了.

关键就是几行代码: 

QAction *QMenu::exec(const QPoint &p, QAction *action)

{

............

QEventLoop eventLoop

d->eventLoop = &eventLoop

................

(void) eventLoop.exec()

...................

}

若要显示菜单,按 Alt 键,菜单栏将显示在工具栏上。若要使菜单栏消失,选择任意菜单上的命令,或再次按 Alt 键。菜单栏实际是一种树型结构,为软件的大多数功能提供功能入口。点击以后,即可显示出菜单项。

菜单栏是按照程序功能分组排列的按钮集合,在标题栏下的水平栏。Microsoft Word2003菜单栏位于标题栏下方,由"文件"和"视图"等9个菜单命令组成。菜单也可以在VC的资源视图中直接创建编辑。MFC为菜单的 *** 作提供了CMenu类。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/8707470.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-20
下一篇 2023-04-20

发表评论

登录后才能评论

评论列表(0条)

保存