如何用Qt4制作自动隐藏菜单栏

发布于 2024-11-02 04:46:31 字数 46 浏览 1 评论 0原文

我正在尝试制作一个具有自动隐藏菜单栏的 Qt 应用程序。我怎样才能做到这一点?

I am trying to make a Qt application which has an auto hiding menu bar. How can i do that?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

北风几吹夏 2024-11-09 04:46:31

这是一个有趣的任务!好吧,让我们看看...我建议您在 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);
    ...
}

有多种方法可以访问 MyWidget 中的“mainWindow”。其中之一是当您在 MyWidget 构造函数中传递 MainWindow 时,在 MyWidget 私有变量中存储一个指针。您还可以从 MyWidget 发出信号并在 MainWindow 中处理它。

希望这有帮助。

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文