Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt GUI _ Не получается никак правильно показать контекстное меню

Автор: wdefik 13.3.2010, 21:10

создаю тулбар, устанавливаю вниз окна
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));

}

в итоге контекстное меню выходит почти там, где должно было бы быть, если тулбар был наверху.
более-менее правильно кон. меню выходит, когда тулбар на ходится либо слева, либо сверху.
что я делаю не так ? :)

Автор: MoPDoBoPoT 13.3.2010, 21:48

Может так?
contMenu->popup(fileToolBar->mapToGlobal(position));

На край, можно еще попробовать использовать QCursor::pos()

Автор: wdefik 13.3.2010, 22:06

Цитата(MoPDoBoPoT @ 13.3.2010, 21:48) *
Может так?
contMenu->popup(fileToolBar->mapToGlobal(position));

На край, можно еще попробовать использовать QCursor::pos()


Спасибо, помогло! :)

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)