0

我在 QGridLayout 中有 QFrame 网格和一个带有一些操作的弹出菜单,这些操作针对发生鼠标右键单击的单元格。在 ContextMenuEvent 的实现中,我使用 common event->pos() 单击了 QPoint,但是到那时我如何访问正确的单元格对象?或者为此目的是否有更好的替代解决方案?

void X::contextMenuEvent(QContextMenuEvent* event)
{   // QPoint target = event->pos();
    // TODO: m_gridLayout-> ...
    // myDerivedCell->setSomething();
}
4

1 回答 1

1

这里有很多解决方案。最简单的是通过你的小部件,调用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());
    ...
}
于 2013-05-21T13:31:47.573 回答