Qt 有没有办法获得指向QScrollBar上下文菜单的指针?
我想在Qt5.6中重新实现QScrollbar的contextmenuevent方法,对功能进行最小的更改。如果我获得指向QScrollBar上下文菜单的指针,就可以完成此操作。但是,似乎没有获得原始QScrollbar上下文菜单的方法。另一个选项是创建QMenu并在新菜单中添加与每个项目相关联的操作。例如,如果我知道在原始上下文菜单中单击“滚动此处”时调用的方法,我可以添加“滚动此处”项,并附加与滚动条上下文菜单关联的操作。有没有办法获得这些行动 为新的上下文菜单使用and。每次出现上下文菜单事件时都会生成该菜单。将向您展示如何构造相同的菜单。它相当简短,非常直截了当:Qt 有没有办法获得指向QScrollBar上下文菜单的指针?,qt,qt5,qscrollarea,Qt,Qt5,Qscrollarea,我想在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);
这并不能回答问题。