开发者

How to make an auto hiding menu bar with Qt4

开发者 https://www.devze.com 2023-02-26 19:14 出处:网络
I am trying to开发者_开发问答 make a Qt application which has an auto hiding menu bar. How can i do that?That\'s an interesting task ! Ok, lets see... I\'d suggest you putting a code that keeps track

I am trying to开发者_开发问答 make a Qt application which has an auto hiding menu bar. How can i do that?


That's an interesting task ! Ok, lets see... I'd suggest you putting a code that keeps track of mouse cursor movement in QMainWindow::centralWidget(). You need to call QWidget::setMouseTracking(true) first to be able to keep track of your mouse movement (they are turned off by default). The code can look like this:

QMainWindow *mainWindow = new QMainWindow;
MyWidget * myWidget = new MyWidget(mainWindow);
myWidget->setMouseTracking(true);
mainWindow->setCentralWidget(myWidget);

And then in your widget QWidget::mouseMove() event you need to detect whether you are in the correct area. The code can look like this:

void MyWidget::mouseMoveEvent(QMouseEvent * event) {
    bool menuVisible = inCorrectArea(event->pos());
    mainWindow->menuBar()->setVisible(menuVisible);
    ...
}

There are several ways to get access to "mainWindow" in your MyWidget. One of them is to store a pointer in MyWidget private variable when you pass MainWindow in its MyWidget constructor. You can also issue a signal from your MyWidget and handle it in MainWindow.

Hope this helps.

0

精彩评论

暂无评论...
验证码 换一张
取 消