如何通过点击QPoint获取QGridLayout项目?

时间:2013-05-21 13:12:13

标签: c++ qt user-interface

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

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

1 个答案:

答案 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());
    ...
}