我在QGridLayout中有一个QFrame网格和一个带有一些操作的弹出菜单,这些操作都是针对鼠标右键单击的单元格。在ContextMenuEvent的实现中,我使用common event-> pos()来点击QPoint,但是我如何通过这一点访问我正确的单元格对象?或者是否有更好的替代解决方案用于此目的?
void X::contextMenuEvent(QContextMenuEvent* event)
{ // QPoint target = event->pos();
// TODO: m_gridLayout-> ...
// myDerivedCell->setSomething();
}
答案 0 :(得分:0)
这里有很多解决方案。最简单的方法是通过您的小部件,调用bool QWidget::underMouse () const
。我最喜欢的是:
frame_i->setContextMenuPolicy(Qt::CustomContextMenu);
connect(frame_i, SIGNAL(customContextMenuRequested(QPoint))
, SLOT(onContextMenu(QPoint)));
...
void X::onContextMenu(const QPoint &pos)
{
QFrame *w = qobject_cast < QFrame * >(sender());
...
}