2011-03-07 2 views
0

시스템 트레이 아이콘과 아이콘을 마우스 오른쪽 버튼으로 클릭 할 때 나타나는 메뉴가있는 Qt 응용 프로그램이 있습니다. 어떤 이유로 메뉴 항목은 디버그 모드에서는 제대로 작동하지만 릴리즈 모드에서는 정상적으로 작동하지 않습니다. trayIconCloseAction_triggered()는 전혀 호출되지 않습니다 - 시스템 트레이 아이콘은 디버그에서 작동하지만 Qt에서 해제 모드가 아닙니다.

QAction* closeAction = new QAction("Close", this); 

QMenu* trayIconMenu = new QMenu(this); 
trayIconMenu->addAction(closeAction); 

QSystemTrayIcon* trayIcon = new QSystemTrayIcon(this); 
trayIcon->setContextMenu(trayIconMenu); 
QIcon trayIconIcon("Application.png"); 
trayIcon->setIcon(trayIconIcon); 
trayIcon->show(); 

QObject::connect(closeAction, SIGNAL(triggered()), this, SLOT(trayIconCloseAction_triggered())); 


void MainWindow::trayIconCloseAction_triggered() { 
    MessageBoxes::info("Close item clicked"); 
} 

나는 아이콘을 마우스 오른쪽 버튼으로 클릭

, 메뉴하지만 "닫기"를 클릭하면 아무것도하지 않습니다 나타납니다. 이 작업은 릴리스 모드에서만 수행됩니다. 아무도 이유가 무엇인지 알 수 있습니까?

Qt의 MSV-2010 정적 빌드를 사용하여 빌드하는 Windows 7 및 Qt Creator를 사용하고 있습니다.

편집 : 아이콘은 클릭 이벤트 ("활성화 된"신호)에도 반응하지 않습니다. 디버그 모드에서 다시 작동하지만 릴리즈는하지 않습니다. 이 같은 상황에서

+0

프로젝트를 다시 빌드하십시오. 1. 빌드 디렉토리에서 "release"및 "debug"폴더를 지우십시오. 2. Qt 작성자의 "build"메뉴에서 "clean all"액션을 사용하십시오. 3. 릴리스 모드로 전환하십시오. 4. Ctrl + R 키를 눌러 필요한 기능을 확인하십시오. – Johnny

+0

추가 : 3. "모두 다시 빌드"하기 전에 "실행 qmake"동작을 사용하십시오. – Johnny

+1

예, 고맙습니다. 답변으로 의견을 자유롭게 추가하면 받아 들일 수있는 것으로 표시됩니다. –

답변

1

은 일반적인 권장 사항이 있습니다 :

  1. 지우기 "릴리스"및 빌드 디렉토리에 "디버그"폴더,
  2. 사용 Qt를에서 "구축"메뉴에서 "깨끗한 모든"조치 생성자,
  3. 해제 모드로 전환 한 다음 "qmake 실행", "모든 작업 다시 작성"동작을 사용하십시오.
  4. Ctrl + R을 누르고 필요한 기능을 확인하십시오.
관련 문제