Это интересное задание!Хорошо, давайте посмотрим ... Я бы предложил вам поместить код, который отслеживает движение курсора мыши, в QMainWindow :: centralWidget () .Сначала вам нужно вызвать QWidget :: setMouseTracking (true) , чтобы иметь возможность отслеживать движение мыши (по умолчанию они отключены).Код может выглядеть следующим образом:
QMainWindow *mainWindow = new QMainWindow;
MyWidget * myWidget = new MyWidget(mainWindow);
myWidget->setMouseTracking(true);
mainWindow->setCentralWidget(myWidget);
И тогда в вашем событии виджета QWidget :: mouseMove () вам необходимо определить, находитесь ли вы в правильной области.Код может выглядеть следующим образом:
void MyWidget::mouseMoveEvent(QMouseEvent * event) {
bool menuVisible = inCorrectArea(event->pos());
mainWindow->menuBar()->setVisible(menuVisible);
...
}
Есть несколько способов получить доступ к «mainWindow» в вашем MyWidget.Одним из них является сохранение указателя в закрытой переменной MyWidget, когда вы передаете MainWindow в его конструкторе MyWidget.Вы также можете подать сигнал от своего MyWidget и обработать его в MainWindow.
Надеюсь, это поможет.