2011-04-19 90 views
4

我试图制作一个具有自动隐藏菜单栏的Qt应用程序。我怎样才能做到这一点?如何使用Qt4制作自动隐藏菜单栏

+1

你可以提供更多关于你想达到的效果的细节吗? – ypnos 2011-04-19 16:09:09

+0

我希望菜单栏只在鼠标光标在垂直方向0-50像素的程序区域之间出现时,如果不是,则会自动隐藏自身。像Windows任务栏自动隐藏功能。 – 2011-04-19 18:28:01

回答

3

这是一个有趣的任务!好吧,让我们看看...我建议你在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中处理它。

希望这会有所帮助。