QRect QAccessibleTableHeaderCell::rect() const { QHeaderView *header = 0; if (false) { #ifndef QT_NO_TABLEVIEW } else if (const QTableView *tv = qobject_cast<const QTableView*>(view)) { if (orientation == Qt::Horizontal) { header = tv->horizontalHeader(); } else { header = tv->verticalHeader(); } #endif #ifndef QT_NO_TREEVIEW } else if (const QTreeView *tv = qobject_cast<const QTreeView*>(view)) { header = tv->header(); #endif } if (!header) return QRect(); QPoint zero = header->mapToGlobal(QPoint(0, 0)); int sectionSize = header->sectionSize(index); int sectionPos = header->sectionPosition(index); return orientation == Qt::Horizontal ? QRect(zero.x() + sectionPos, zero.y(), sectionSize, header->height()) : QRect(zero.x(), zero.y() + sectionPos, header->width(), sectionSize); }
void ListingTable::headerContextMenuRequested(const QPoint& pos) { QHeaderView* header = horizontalHeader(); QMenu menu; buildHeaderSectionMenu(&menu); menu.exec(header->mapToGlobal(pos)); }
void MashStepTableModel::contextMenu(const QPoint &point) { QObject* calledBy = sender(); QHeaderView* hView = qobject_cast<QHeaderView*>(calledBy); int selected = hView->logicalIndexAt(point); unitDisplay currentUnit; unitScale currentScale; // Since we need to call generateVolumeMenu() two different ways, we need // to figure out the currentUnit and Scale here currentUnit = displayUnit(selected); currentScale = displayScale(selected); QMenu* menu; QAction* invoked; switch(selected) { case MASHSTEPAMOUNTCOL: menu = Brewtarget::setupVolumeMenu(parentTableWidget,currentUnit, currentScale); break; case MASHSTEPTEMPCOL: case MASHSTEPTARGETTEMPCOL: menu = Brewtarget::setupTemperatureMenu(parentTableWidget,currentUnit); break; case MASHSTEPTIMECOL: menu = Brewtarget::setupTimeMenu(parentTableWidget,currentScale); break; default: return; } invoked = menu->exec(hView->mapToGlobal(point)); if ( invoked == 0 ) return; QWidget* pMenu = invoked->parentWidget(); if ( pMenu == menu ) setDisplayUnit(selected,(unitDisplay)invoked->data().toInt()); else setDisplayScale(selected,(unitScale)invoked->data().toInt()); }