问题标签 [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.
qt - 如何将上下文菜单添加到 qml QDeclarativeView?
我的 qml 小部件中需要 ContextMenu。我有一个解决方案:创建QGraphicsProxyWidget,其中包含QMenu,但是有一个问题:上下文菜单在主窗口之外是不可见的。如何将主窗口设置为菜单的父级?自定义组件是个坏主意 - 我需要 QMenu 的可能性:执行、操作、弹出窗口等。
主.qml
主文件
qt - 如何在上下文菜单中添加检查/取消检查 QAction?
我在 Qt 中创建了一个上下文菜单,我需要菜单中的项目以选中/未选中的方式工作,以便每次单击相应项目时都会切换。如何将此功能添加到 QAction 中,如下所示?
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 触发事件四次。如果我为每个子菜单创建一个单独的信号映射器,它工作正常。但我希望应该使用一个映射器,我在这里做错了。答案的评论中有更多细节。
contextmenu - 将上下文 QMenu 添加到左键单击 PySide 中的按钮
我想在按下鼠标左键时添加上下文菜单emailbtn
我已经尝试过contextMenuEvent
方法,但这给了我右键单击:/我错过了什么?任何帮助将不胜感激。
pyqt4 - 在 pyqt QWidget 中添加子菜单
我知道它非常基本的问题,但我有点困惑,可能我忘记了一些东西。
我正在尝试在 QMenuBar() 的“工具”中添加一个子菜单“预览”
到目前为止,这就是我想要做的
但我想这不是添加子菜单的正确方法
c++ - 使用 QMenu 并传递参数
我有一个QMenu
动态构建的几个菜单项。
为此,我遍历了一组菜单项,其中包含名称和操作(如果菜单项被点击,则需要执行),并继续将它们添加到上下文菜单中。所有菜单项都需要连接到一个公共插槽。
但不知何故,触发动作没有发生。即到达连接语句,但控制没有传递到指定的SLOT,不采取任何行动。
谁能告诉我我哪里出了问题,拜托?
triggers - 如何捕捉点击 QMenuBar
我想捕捉在 QMainWindow 中的 QMenuBar 上的点击,所以我将 QMenuBar 子类化并且我已经覆盖了 mousePressEvent 函数,但是现在当我点击菜单时,子菜单不会显示它们。
一个想法 ?
c++ - 指定 QMenu 的左上角位置
单击鼠标后我有 QPoint pos以及此时要显示的内容 QMenu。但是我会在QMenu的左上角显示什么菜单。和
显示菜单,使得pos是它的左边缘中点
c++ - QMenus 通常在自己的线程中吗?等待他们完成事件处理的正确方法是什么?
在调试器中,我可以看到我的 QMenu 对象与主 gui 线程不在同一个线程中。例如, QApplication.instance().thread() == 0xdeadbeef
, 但是mymenu.thread() == 0xdeadbabe
1)这是预期的吗?顺便说一句,我的 QMenus不是本机菜单(我使用过setNativeMenuBar(False)
)
2)我想阻止,直到菜单完成处理所有事件。我试过QApplication.processEvents()
了,但这有点棘手,因为它必须从与我要等待的小部件(在我的情况下是菜单)相同的线程中调用。我结合使用自定义事件过滤器类moveToThread()
来确保processEvents()
从 QMenu 正在运行的同一个线程中调用它,但这似乎并不重要。
无论我尝试什么,我似乎都无法阻止所有 QMenu 事件/动作信号处理的完成。我唯一的选择似乎是sleep()
足够长,以至于我知道处理已完成。但这对于我的用例来说并不是真正可以接受的。
c++ - 系统托盘中的菜单没有每个 QActions
我正在运行 osx mountain lion(10.8.3),当我运行下面链接中的代码时,我有一个只有一个操作的菜单......
https://gist.github.com/Supm4n/8c705154b8586618f4cc
另一个奇怪的事情是,当我只使用 goOnline 以外的一个操作进行编译时,当我单击系统托盘图标时,我看不到任何菜单。
我的 Qt 版本是 5.0.1
在此先感谢您的帮助。