然而怎么让菜单消失却非常麻烦
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类。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)