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()

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

}

1、隐藏标题栏、工具窗口以及窗口置顶。

2、设置窗体透明度。

3、隐藏标题栏后实现拖动。

4、解决鼠标按下其他控件后移动鼠标到QWidget区域时界面移动的问题。

5、美化自定义窗口。


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存