[英]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.