создаю тулбар, устанавливаю вниз окна
fileToolBar = new QToolBar(tr("&File"));
fileToolBar->addAction(openAction);
fileToolBar->addAction(fullScAction);
fileToolBar->addAction(quitAction);
fileToolBar->setMovable(false);
addToolBar(Qt::BottomToolBarArea,fileToolBar);
устанавливаю кастом контекст
fileToolBar->setContextMenuPolicy(Qt::CustomContextMenu);
соединяю сигнал запроса контекстного меню с функцией показа этого меню
connect(fileToolBar,SIGNAL(customContextMenuRequested(const QPoint&)) ,this,SLOT(showContextMenu(const QPoint&)));
создаю меню и собираюсь показать хотя бы примерно там где произошел вызов контекстного меню
void SvMainWIndow::showContextMenu(const QPoint& position)
{
contMenu = new QMenu(this);
contMenu->addAction(quitAction);
contMenu->addAction(openAction);
contMenu->addAction(fullScAction);
contMenu->popup(mapToGlobal(position));
}
в итоге контекстное меню выходит почти там, где должно было бы быть, если тулбар был наверху.
более-менее правильно кон. меню выходит, когда тулбар на ходится либо слева, либо сверху.
что я делаю не так ?
Может так?
contMenu->popup(fileToolBar->mapToGlobal(position));
На край, можно еще попробовать использовать QCursor::pos()
Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)