QTabWidget 选项卡上下文菜单
每当单击选项卡时,我需要显示上下文菜单,并且它需要对该特定选项卡做出反应。有没有办法在不子类化的情况下做到这一点?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
每当单击选项卡时,我需要显示上下文菜单,并且它需要对该特定选项卡做出反应。有没有办法在不子类化的情况下做到这一点?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(4)
简单的方法,但可能不完全是您需要的:
这将在选项卡更改(不一定单击)时调用一个函数,并且
在当前鼠标位置生成一个菜单。
复杂的方式,完全符合您的描述:
Easy way, but possibly not precisely what you need:
This will get a function called whenever the tab is changed (not necessarily clicked) and
spawn a menu at the current mouse position.
Complicated way, which exactly does what you describe:
创建 QMenu:
将您的操作添加到菜单。
创建一个在选项卡栏上请求上下文菜单时调用的槽:
在槽中显示菜单。槽的定义:
如果您需要在另一个函数中当前选项卡的索引,请使用以下内容:
create a QMenu:
add your actions to menu.
Create a slot to be called when context menu requested on tab bar:
In the slot, show the menu. Definition of slot:
If you need index of current tab in another function, use following:
根据 @Petrzio Berkerle 的评论,在 https://www.qtcentre.org/threads/16703-QTabBar-Context-menu-on-tab?p=84057#post84057 对我来说效果很好。 (实际上,这是唯一有效的。)
那里的帖子中的代码(通过“spirit”):
As per the comment by @Petrzio Berkerle, the solution found at https://www.qtcentre.org/threads/16703-QTabBar-Context-menu-on-tab?p=84057#post84057 worked very well for me. (Actually, it was the only one that worked at all.)
The code from the post there (by "spirit"):
我认为您需要创建自己的类,该类继承自 QTabWidget 并覆盖 MousePressEvent(QMouseEvent) 受保护函数,您可以在其中右键单击时创建上下文菜单。
I think you need to create your own class that inherits from QTabWidget and override the MousePressEvent(QMouseEvent) protected function in which you can create your context menu on right click.