2011-04-19 5 views
4

자동 숨기기 메뉴 막대가있는 Qt 응용 프로그램을 만들려고합니다. 내가 어떻게 할 수 있니?Qt4로 자동 숨기기 메뉴 모음을 만드는 방법

+1

달성하려는 효과에 대해 자세히 설명해 줄 수 있습니까? – ypnos

+0

마우스 커서가 프로그램 영역의 0-50 픽셀 사이에있을 때만 메뉴 표시 줄을 표시하고 싶지 않으면 자동으로 숨 깁니다. Windows 작업 표시 줄 자동 숨기기 기능과 동일합니다. –

답변

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를"에 접근하는 방법은 여러 가지가 있습니다. 그 중 하나는 MainWindow를 MyWidget 생성자에 전달할 때 MyWidget private 변수에 포인터를 저장하는 것입니다. MyWidget에서 신호를 보내고 MainWindow에서 처리 할 수도 있습니다.

희망이 도움이됩니다.

관련 문제