У меня есть проблема с поиском моего QMenu во время выполнения. menu->pos()
должен отправить свою позицию обратно, но он отправляет QPoint(0,0)
. Чтобы найти его реальное положение, мне нужно открыть это меню и навести курсор на QAction.
Есть ли способ инициализировать правильное положение меню, не открывая это меню вручную?
Идея состоит в том, чтобы показать пользователю, где он может найти вариант, и использование exec
или popup
без правильной позиции не помогает…
mainwindow.cpp
(QMAKE_CXXFLAGS += -std=c++11
)
#include "mainwindow.h"
#include <QMenu>
#include <QMenuBar>
#include <QDebug>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
QMenuBar * menuBar = new QMenuBar(this);
QMenu * menu = new QMenu("File", this);
menu->addAction("Action0");
menuBar->addMenu(menu);
qDebug() << menu->pos();
connect(menu, &QMenu::hovered, this, [menu] {
qDebug() << menu->pos();
});
setMenuBar(menuBar);
}
MainWindow::~MainWindow()
{
}
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = 0);
~MainWindow();
};
#endif // MAINWINDOW_H
main.cpp
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
pos()
возвращаетQPoint(0,0)
, но после наведения действие в менюpos()
возвращает положение меню на экране. Я хотел бы получить эту должность напрямую. - person Astalaseven   schedule 13.08.2015