我正在尝试创建一个具有自动隐藏菜单栏的Qt应用程序。我怎么能这样做?
答案 0 :(得分:3)
这是一项有趣的任务!好的,让我们看一下......我建议你在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中处理它。
希望这有帮助。