4
我试图制作一个具有自动隐藏菜单栏的Qt应用程序。我怎样才能做到这一点?如何使用Qt4制作自动隐藏菜单栏
我试图制作一个具有自动隐藏菜单栏的Qt应用程序。我怎样才能做到这一点?如何使用Qt4制作自动隐藏菜单栏
这是一个有趣的任务!好吧,让我们看看...我建议你在QMainWindow::centralWidget()中放置一个跟踪鼠标光标移动的代码。您首先需要拨打QWidget::setMouseTracking(true)才能跟踪鼠标移动(默认关闭)。该代码可以是这样的:
QMainWindow *mainWindow = new QMainWindow;
MyWidget * myWidget = new MyWidget(mainWindow);
myWidget->setMouseTracking(true);
mainWindow->setCentralWidget(myWidget);
然后在你的widget需要检测你是否在正确的区域QWidget的::的mouseMove()事件。代码可能如下所示:
void MyWidget::mouseMoveEvent(QMouseEvent * event) {
bool menuVisible = inCorrectArea(event->pos());
mainWindow->menuBar()->setVisible(menuVisible);
...
}
有几种方法可以在MyWidget中访问“mainWindow”。其中之一是当您在其MyWidget构造函数中传递MainWindow时,将指针存储在MyWidget私有变量中。您也可以从MyWidget发出一个信号并在MainWindow中处理它。
希望这会有所帮助。
你可以提供更多关于你想达到的效果的细节吗? – ypnos 2011-04-19 16:09:09
我希望菜单栏只在鼠标光标在垂直方向0-50像素的程序区域之间出现时,如果不是,则会自动隐藏自身。像Windows任务栏自动隐藏功能。 – 2011-04-19 18:28:01