找回密码
 立即注册
收起左侧

Qt怎么将按钮和菜单结合起来

8
回复
13873
查看
[复制链接]
累计签到:7 天
连续签到:1 天
来源: 2015-11-2 21:24:35 显示全部楼层 |阅读模式
5Qter豆
当第一次点按钮时,在按钮上方弹出action列表并且选中一个,就是在前面打上对勾,再次按下时,选择下一个action,鼠标不能直接选中任何action,换句话说,只能通过点击按钮选择action。当鼠标点击其他地方时,action列表消失,选项生效。跪求大神,我是新手,搞了一天还没解决
另外,也不必非得是action,像listwidget也行。。

最佳答案

查看完整内容

没在ubuntu下编过,你的这个效果用QMenu可能不太好做,自己写个吧,用QListWidget或者QWidget自己进行布局
回复

使用道具 举报

累计签到:882 天
连续签到:3 天
2015-11-2 21:24:36 显示全部楼层
zhangtao 发表于 2015-11-3 16:15
为什么在ubuntu下,我将菜单设置为非模态对话框后,父窗口任然无法接收到鼠标事件?
在windows下就没有问 ...

没在ubuntu下编过,你的这个效果用QMenu可能不太好做,自己写个吧,用QListWidget或者QWidget自己进行布局
回复

使用道具 举报

累计签到:882 天
连续签到:3 天
2015-11-3 10:19:41 显示全部楼层
没太看明白这句是什么意思“再次按下时,选择下一个action,鼠标不能直接选中任何action,换句话说,只能通过点击按钮选择action”,还有应该说明你是卡在哪一步做不出来,讲一下你的思路让别人看看对不对,这样提问更有效
回复

使用道具 举报

累计签到:7 天
连续签到:1 天
2015-11-3 12:14:15 显示全部楼层
一叶知秋 发表于 2015-11-3 10:19
没太看明白这句是什么意思“再次按下时,选择下一个action,鼠标不能直接选中任何action,换句话说,只能通 ...

这句话的意思是,第一次点按钮,弹出菜单并触发默认action,再点按钮的话,触发下一个action,一直这样循环下去,期间菜单是一直显示着的,直到点击其他的按钮,菜单隐藏。

我目前是用QPushButton和QMenu来做的,把按钮的clicked信号和菜单的exec()槽连接起来了。这样的话,第一次点按钮,菜单会弹出,但是第二次点按钮的时候,菜单隐藏了。
回复

使用道具 举报

累计签到:7 天
连续签到:1 天
2015-11-3 14:21:21 显示全部楼层
再问一下,我对子窗口setWindowFlags(Qt:opup),   当达到一定条件,子窗口弹出后位于最前,这个时候,不让子窗口小时的情况下,怎么 让后面的父窗口处理鼠标事件呢?
回复

使用道具 举报

累计签到:7 天
连续签到:1 天
2015-11-3 16:15:46 显示全部楼层
zhangtao 发表于 2015-11-3 12:14
这句话的意思是,第一次点按钮,弹出菜单并触发默认action,再点按钮的话,触发下一个action,一直这样循 ...

为什么在ubuntu下,我将菜单设置为非模态对话框后,父窗口任然无法接收到鼠标事件?
在windows下就没有问题!!!

点评

没在ubuntu下编过,你的这个效果用QMenu可能不太好做,自己写个吧,用QListWidget或者QWidget自己进行布局  详情 回复 发表于 2015-11-3 17:44
回复

使用道具 举报

累计签到:7 天
连续签到:1 天
2015-11-3 20:15:24 显示全部楼层
一叶知秋 发表于 2015-11-3 17:44
没在ubuntu下编过,你的这个效果用QMenu可能不太好做,自己写个吧,用QListWidget或者QWidget自己进行布 ...

用listWidget的话,点击其他按钮->隐藏菜单列表这个功能就必须放在其他按钮的槽函数里面了,怎么样把他封装城一个类呢?

点评

对,就是这个比较麻烦,需要考虑很多情况,可以使用事件过滤器来处理,可能稍微简单些,另外也可以看看QMenu的源码是怎么实现这一功能的  详情 回复 发表于 2015-11-3 21:13
回复

使用道具 举报

累计签到:882 天
连续签到:3 天
2015-11-3 21:13:00 显示全部楼层
zhangtao 发表于 2015-11-3 20:15
用listWidget的话,点击其他按钮->隐藏菜单列表这个功能就必须放在其他按钮的槽函数里面了,怎么样把他封 ...

对,就是这个比较麻烦,需要考虑很多情况,可以使用事件过滤器来处理,可能稍微简单些,另外也可以看看QMenu的源码是怎么实现这一功能的
回复

使用道具 举报

累计签到:7 天
连续签到:1 天
2015-11-3 21:50:15 显示全部楼层
一叶知秋 发表于 2015-11-3 21:13
对,就是这个比较麻烦,需要考虑很多情况,可以使用事件过滤器来处理,可能稍微简单些,另外也可以看看QM ...

嗯,我也是打算明天看源码,项目在赶进度,这个问题真是捉急啊。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了