Доброго времени суток!
Есть один вопрос с которым всё никак совладать не могу, примерно такая ситуация: Создаю в конструкторе главного окна объект класса QMenu, для того чтобы оно потом показывалось где надо, само QMenu - аттрибут окна, выглядит конструктор так:
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
popUp_LogTree = new QMenu(this->ui->logTree);
popUp_LogTree->clear();
popUp_LogTree->setParent(this->ui->logTree);
//PopUp Меню для LogTree
QAction * vActionExpandeAll = new QAction(QIcon(":/icons/expandAll"), "&Expande all items", popUp_LogTree);
connect(vActionExpandeAll, SIGNAL(triggered()), SLOT(expandeAllTreeItems()));
QAction * vActionCollapseAll = new QAction(QIcon(":/icons/collapseAll"), "&Collapse all items", popUp_LogTree);
connect(vActionCollapseAll, SIGNAL(triggered()), SLOT(collapseAllTreeItems()));
popUp_LogTree->addAction(vActionExpandeAll);
popUp_LogTree->addAction(vActionCollapseAll);
connect(this->ui->logTree, SIGNAL(customContextMenuRequested(QPoint)), SLOT(on_logTree_customContextMenuRequested(QPoint)));
connect(popUp_LogTree, SIGNAL(triggered(QAction*)), SLOT(popUpSelected(QAction*)));
}
После чего в слоте on_logTree_customContextMenuRequested пишу так:
void MainWindow::on_logTree_customContextMenuRequested(QPoint pos)
{
this->popUp_LogTree->exec(pos);
}
В чем собственно проблема: оно конечно показывается но вот позиция расчитывается не верно, я уж и
this->popUp_LogTree->exec(QWidget::mapToGlobal(pos));
и
this->popUp_LogTree->exec(QWidget::mapToParent(pos));
делал и как только не извращался всё равно получается одно и то же.
Подскажите в чем может быть тут проблема? Методом тыка понял что мепирует он относительно самого MainWindow, но как сделать чтобы оно работало по нормальному с Widget'ом который мне нужен? Заранее благодарен за любую помощь!