2
Mac OS 버전의 응용 프로그램에 대한 시스템 트레이 아이콘이 삭제됩니다. 그러나 하나의 작은 문제가 있습니다. 사용자가 주 창을 닫으면 응용 프로그램이 백그라운드에서 계속 실행되고 사용자가 도크 아이콘을 클릭하면 주 창이 다시 보일 것입니다. 지금까지 나는이 아이콘을 클릭하는 것을 가로 챌 수있는 방법을 찾지 못했습니다.Mac OS에서의 Qt - 도크 메뉴에서의 클릭 감지
Qt를 사용하여 이것을 수행 할 수있는 방법이 있습니까? 그렇지 않은 경우이 동작을 구현하기 위해 기본 API를 어떻게 진행해야합니까?
QApplication을 구현하는 사용자 지정 응용 프로그램 클래스를 만들려고 했으므로 macEventFilter를 다시 구현할 수 있지만이 함수에 대한 설명서는 부족합니다.
application.h :
#ifndef APPLICATION_H
#define APPLICATION_H
#include <QApplication>
class QWidget;
class Application : public QApplication
{
Q_OBJECT
public:
Application(int, char*[]);
void setMainWidget(QWidget*);
bool macEventFilter(EventHandlerCallRef, EventRef);
private:
QWidget *mainWidget;
};
#endif // APPLICATION_H
application.cpp :
#include <Application.h>
#include <QWidget>
Application::Application(int argc, char *argv[])
: QApplication(argc, argv)
{
}
void Application::setMainWidget(QWidget *mainWidget)
{
this->mainWidget = mainWidget;
}
bool Application::macEventFilter(EventHandlerCallRef, EventRef)
{
mainWidget->show();
return false;
}
MAIN.CPP :
당신은 확인 후, 창문의 closeEvent()를 구현할 필요가#include <QtCore>
#include <Application.h>
#include "mainwidget.h"
int main(int argc, char *argv[]) {
Application a(argc, argv);
MainWidget mainWidget;
#ifdef Q_WS_MAC
a.setWindowIcon(QIcon(":/resource/army-officer-icon.png"));
#endif
a.setMainWidget((QWidget*)&mainWidget);
mainWidget.show();
return a.exec();
}
내가하려는 것은 그 반대입니다. 내 창을 숨기려면 이미 closeEvent() reimplemented 있지만 도킹 아이콘을 클릭하면 창을 볼 수있는 상태로 반환하지 않습니다. 당신도 메리 크리스마스 – Raphael
새로운 프로그램을 시작 하시겠습니까? –
아니요, 내 프로그램이 숨겨진 기본 창과 함께 계속 실행됩니다. 도크 아이콘을 클릭해도 아무런 효과가 없습니다. – Raphael