2011-04-19 87 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中處理它。

希望這會有所幫助。