Qt 有没有办法获得指向QScrollBar上下文菜单的指针?

Qt 有没有办法获得指向QScrollBar上下文菜单的指针?,qt,qt5,qscrollarea,Qt,Qt5,Qscrollarea,我想在Qt5.6中重新实现QScrollbar的contextmenuevent方法,对功能进行最小的更改。如果我获得指向QScrollBar上下文菜单的指针,就可以完成此操作。但是,似乎没有获得原始QScrollbar上下文菜单的方法。另一个选项是创建QMenu并在新菜单中添加与每个项目相关联的操作。例如,如果我知道在原始上下文菜单中单击“滚动此处”时调用的方法,我可以添加“滚动此处”项,并附加与滚动条上下文菜单关联的操作。有没有办法获得这些行动 为新的上下文菜单使用and。每次出现上下文菜单

我想在Qt5.6中重新实现QScrollbar的contextmenuevent方法,对功能进行最小的更改。如果我获得指向QScrollBar上下文菜单的指针,就可以完成此操作。但是,似乎没有获得原始QScrollbar上下文菜单的方法。另一个选项是创建QMenu并在新菜单中添加与每个项目相关联的操作。例如,如果我知道在原始上下文菜单中单击“滚动此处”时调用的方法,我可以添加“滚动此处”项,并附加与滚动条上下文菜单关联的操作。有没有办法获得这些行动

为新的上下文菜单使用and。

每次出现上下文菜单事件时都会生成该菜单。将向您展示如何构造相同的菜单。它相当简短,非常直截了当:

QPointer<QMenu> menu = new QMenu(this);
QAction *actScrollHere = menu->addAction(tr("Scroll here"));
...
QAction *actionSelected = menu->exec(event->globalPos());
delete menu;

if (actionSelected == 0)
    /* do nothing */ ;
else if (actionSelected == actScrollHere)
    setValue(d_func()->pixelPosToRangeValue(horiz ? event->pos().x() : event->pos().y()));
...

您可以使用CustomContextMenuPolicy:

  QScrollBar *scroll = new QScrollBar;
  scroll->setContextMenuPolicy(Qt::CustomContextMenu);
  connect(scroll, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(populateContextMenu(QPoint)));
在插槽populateContextMenu中:

QMenu* menu = new QMenu;
// Add actions
QAction* example = menu->addAction("Example");
// Connect the action clicked with the slot 
connect(example, SIGNAL(triggered(bool)),.....);
// Finally, show the context menu, map to global to show the correct position
const QPoint pos = ui->listView->mapToGlobal(point);
menu->popup(pos);

这并不能回答问题。