Dock에서 응용 프로그램 아이콘을 한 번 클릭하면 해당 응용 프로그램이 시작되거나 응용 프로그램이 이미 열려 있으면 해당 응용 프로그램으로 전환되고 열려있는 모든 창을 앞으로 가져옵니다. 그 응용 프로그램.OS X에서 Dock 단축키를 사용하여 독으로 최소화 한 후 Qt 앱 복원
내 Qt 앱에서이 동작이 나타나지 않습니다. 도킹 바로 가기가 있는데, 도크에서 앱을 최소화하고, 최소화 된 인스턴스를 클릭하면 앱이 복원됩니다.
Dock (도킹 바로 가기)에서 응용 프로그램 아이콘을 클릭해도 아무런 변화가 없습니다.
은 (내가 마우스 오른쪽 단추로 클릭하고 "모두 표시 윈도우"-하지만 다른 모든 응용 프로그램의 동작과 유사하지 않다) 나는이 대답에서 코드를 삽입하려고: https://stackoverflow.com/a/15363738/1217150
qDebug
문, 생성자에서
if(test) qDebug("registered");
및
void MyApplictionClass::onClickOnDock()
{
qDebug("dock clicked");
}
배치
시작시 두 메시지를 모두받습니다.하지만 최소화 한 후 또는 시작한 후 언제든지 클릭하거나 두 번 클릭하여 바로 가기를 도킹 할 수 없습니다.
전체 코드 삽입 :
MyApplicationClass.h :
#include <objc/objc.h>
#include <objc/message.h>
class MyApplicationClass: public QApplication
{
....
bool dockClickHandler(id self, SEL _cmd, ...);
void onClickOnDock();
};
MyApplicationClass.cpp :
MyApplicationClass::MyApplicationClass()
{
....
objc_object* cls = objc_getClass("NSApplication");
SEL sharedApplication = sel_registerName("sharedApplication");
objc_object* appInst = objc_msgSend(cls, sharedApplication);
if(appInst != NULL)
{
objc_object* delegate = objc_msgSend(appInst, sel_registerName("delegate"));
objc_object* delClass = objc_msgSend(delegate, sel_registerName("class"));
const char* tst = class_getName(delClass->isa);
bool test = class_addMethod((objc_class*)delClass,
sel_registerName("applicationShouldHandleReopen::hasVisibleWindows:"),
(IMP)dockClickHandler(appInst, sharedApplication), "[email protected]:");
if(!test) qDebug("not registered");
else qDebug("registered");
}
.....
}
bool MyApplicationClass::dockClickHandler(id self, SEL _cmd, ...)
{
Q_UNUSED(self)
Q_UNUSED(_cmd)
onClickOnDock();
return true;
}
void MyApplicationClass::onClickOnDock()
{
qDebug("dock clicked");
}
은 아마도 내가 뭔가 잘못을 했습니까? 내가 이해할 수없는 몇 가지 항목이 있습니다 ... 참조 된 게시물은 클래스의 일부가 아닌 dockClickHandler
을 가졌습니다 ... 나는 그들이 그것을 가지고있는 곳을 모르겠습니다 ... 그리고 제가 그것을 등록했을 때 논쟁을해야했습니다 그렇지 않으면 빌드를 거부합니다. 그래도 뭔가하는 것처럼 보입니다 ... 옳은 일이 아닙니다. 이 코드에서는 앱이 도킹 클릭에 반응하는 위치를 알 수 없습니다.
올바른 방법입니까? 또는 도킹 바로 가기가 클릭되었을 때 어떻게 복원 할 수 있습니까?
(OSX 10.6-10.9, Qt는 4.8 것은)