簡體   English   中英

如何通過單擊QPoint獲取QGridLayout項目?

[英]How to get QGridLayout item by clicked QPoint?

我在QGridLayout中具有QFrames網格,並且具有一些操作的彈出菜單,這些操作針對發生鼠標右鍵單擊的單元格。 在ContextMenuEvent的實現上,我使用常見的event-> pos()單擊了QPoint,但是到那時我如何才能訪問正確的單元格對象呢? 還是為此目的有更好的替代解決方案?

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

這里有很多解決方案。 最簡單的方法是遍歷您的小部件,調用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());
    ...
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM