QTabWidget选项卡上下文菜单

deu*_*ces 7 c++ qt qt4 qtabwidget

我需要在单击选项卡时显示上下文菜单,并且需要对该特定选项卡作出反应.有没有办法在不进行子类化的情况下执行此操作?

Fre*_*abe 5

简单的方法,但可能不是你需要的:

  1. 连接到QTabWidget的'currentChanged'信号
  2. 在连接到信号的插槽中,创建一个QMenu并根据需要填充它
  3. 最后,在连接到信号的插槽中,调用QMenu :: exec(QCursor :: pos())

每当选项卡被更改(不一定被点击)并在当前鼠标位置产生菜单时,这将获得一个调用的函数.

复杂的方式,这正是你所描述的:

  1. QTabWidget上调用QObject :: installEventFilter,以便将QTabWidget上的所有事件重定向到您自己的对象.
  2. 在您自己的对象中,重新实现QObject :: customEvent并处理所有QMouseEvent事件.
  3. 根据需要填充QMenu并在您正在处理的QMouseEvent的位置调用QMenu :: exec.