问题标签 [qmenu]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1304 浏览

qt - 如何将上下文菜单添加到 qml QDeclarativeView?

我的 qml 小部件中需要 ContextMenu。我有一个解决方案:创建QGraphicsProxyWidget,其中包含QMenu,但是有一个问题:上下文菜单在主窗口之外是不可见的。如何将主窗口设置为菜单的父级?自定义组件是个坏主意 - 我需要 QMenu 的可能性:执行、操作、弹出窗口等。

主.qml

主文件

0 投票
1 回答
8987 浏览

qt - 如何在上下文菜单中添加检查/取消检查 QAction?

我在 Qt 中创建了一个上下文菜单,我需要菜单中的项目以选中/未选中的方式工作,以便每次单击相应项目时都会切换。如何将此功能添加到 QAction 中,如下所示?在此处输入图像描述

0 投票
1 回答
3805 浏览

c++ - 如何通过 QSignalMapper 或其他方式将 QString 从 QMenu 传递到 Qt 插槽

我有一个带有许多子菜单的 QMenu。这些是动态创建的,即名称菜单来自数据库并在循环中创建。现在我想在单击菜单时触发相同的 slottrigger() 或类似的,但我需要将 QString 菜单名称传递给 slot,以便我可以执行特定于菜单的操作。我已经尝试了,即将一个 QAction * 传递给触发的事件并使用了 setData 但我得到了运行时错误。

object::connect: 没有这样的信号 QAction::triggered(QAction *)

或者,我也尝试过 QSignalMapper ,其中 signalMapper 是在构造函数中初始化的数据成员

在第二种情况下,我没有收到任何错误,但是插槽函数 playChannel 没有被调用。如果有人可以帮助解决它,我将不胜感激。

更新 1:我从其他示例中看到的唯一区别是,通常人们将来自多个小部件的信号连接到一个插槽(比如不同的按钮)。在我的情况下,我将几个子菜单(具有不同的名称)连接到一个插槽。这应该有什么不同吗?

更新 2:它在以下解决方案为 QSignalMapper 建议的更正后工作。此外,我使用 SubMenu 作为 setMapping 的参数,而应该使用 MenuAction 项。但是现在我多次触发事件,即与所选子菜单类别的主菜单中的条目一样多。如果频道类型是英语(主菜单),有四个条目)、HBO、明星电影等(子菜单),并且我选择 HBO,则使用字符串 HBO 触发事件四次。如果我为每个子菜单创建一个单独的信号映射器,它工作正常。但我希望应该使用一个映射器,我在这里做错了。答案的评论中有更多细节。

0 投票
2 回答
6028 浏览

contextmenu - 将上下文 QMenu 添加到左键单击 PySide 中的按钮

我想在按下鼠标左键时添加上下文菜单emailbtn

我已经尝试过contextMenuEvent方法,但这给了我右键单击:/我错过了什么?任何帮助将不胜感激。

0 投票
1 回答
9662 浏览

pyqt4 - 在 pyqt QWidget 中添加子菜单

我知道它非常基本的问题,但我有点困惑,可能我忘记了一些东西。

我正在尝试在 QMenuBar() 的“工具”中添加一个子菜单“预览”

到目前为止,这就是我想要做的

但我想这不是添加子菜单的正确方法

0 投票
2 回答
1045 浏览

c++ - 使用 QMenu 并传递参数

我有一个QMenu动态构建的几个菜单项。

为此,我遍历了一组菜单项,其中包含名称和操作(如果菜单项被点击,则需要执行),并继续将它们添加到上下文菜单中。所有菜单项都需要连接到一个公共插槽

但不知何故,触发动作没有发生。即到达连接语句,但控制没有传递到指定的SLOT,不采取任何行动。

谁能告诉我我哪里出了问题,拜托?

0 投票
1 回答
623 浏览

triggers - 如何捕捉点击 QMenuBar

我想捕捉在 QMainWindow 中的 QMenuBar 上的点击,所以我将 QMenuBar 子类化并且我已经覆盖了 mousePressEvent 函数,但是现在当我点击菜单时,子菜单不会显示它们。

一个想法 ?

0 投票
1 回答
1011 浏览

c++ - 指定 QMenu 的左上角位置

单击鼠标后我有 QPoint pos以及此时要显示的内容 QMenu。但是我会在QMenu的左上角显示什么菜单。和

显示菜单,使得pos是它的左边缘中点

0 投票
0 回答
101 浏览

c++ - QMenus 通常在自己的线程中吗?等待他们完成事件处理的正确方法是什么?

在调试器中,我可以看到我的 QMenu 对象与主 gui 线程不在同一个线程中。例如, QApplication.instance().thread() == 0xdeadbeef, 但是mymenu.thread() == 0xdeadbabe

1)这是预期的吗?顺便说一句,我的 QMenus不是本机菜单(我使用过setNativeMenuBar(False)

2)我想阻止,直到菜单完成处理所有事件。我试过QApplication.processEvents()了,但这有点棘手,因为它必须从与我要等待的小部件(在我的情况下是菜单)相同的线程中调用。我结合使用自定义事件过滤器类moveToThread()来确保processEvents()从 QMenu 正在运行的同一个线程中调用它,但这似乎并不重要。

无论我尝试什么,我似乎都无法阻止所有 QMenu 事件/动作信号处理的完成。我唯一的选择似乎是sleep()足够长,以至于我知道处理已完成。但这对于我的用例来说并不是真正可以接受的。

0 投票
1 回答
105 浏览

c++ - 系统托盘中的菜单没有每个 QActions

我正在运行 osx mountain lion(10.8.3),当我运行下面链接中的代码时,我有一个只有一个操作的菜单......

https://gist.github.com/Supm4n/8c705154b8586618f4cc

另一个奇怪的事情是,当我只使用 goOnline 以外的一个操作进行编译时,当我单击系统托盘图标时,我看不到任何菜单。

我的 Qt 版本是 5.0.1

在此先感谢您的帮助。