Как сделать автоматическое скрытие строки меню с помощью Qt4 - PullRequest
4 голосов
/ 19 апреля 2011

Я пытаюсь создать приложение Qt, которое имеет панель меню с автоматическим скрытием.Как я могу это сделать?

1 Ответ

3 голосов
/ 20 апреля 2011

Это интересное задание!Хорошо, давайте посмотрим ... Я бы предложил вам поместить код, который отслеживает движение курсора мыши, в 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.

Надеюсь, это поможет.

...