我在Mac OS X上使用QT和c ++。 关闭我的应用程序时,我使用 hide()来保持我的应用程序运行并隐藏窗口。
但是当我点击停靠栏中的应用图标后,它就不再出现了。
我读here使用以下代码而不是hide()应该可以解决此问题:
ProcessSerialNumber pn;
GetFrontProcess (&pn);
ShowHideProcess(&pn,false);
但我不知道如何使用该代码:s 有人可以解释如何使用这段代码,或者如何解决我的问题?
谢谢!
答案 0 :(得分:0)
您正在谈论的代码是本机OSX API。我在国外,但我会尝试在这里制造魔法:
代表ProcessSerialNumber
//either
#include <Carbon/Carbon.h>
#include <Cocoa/Cocoa.h>
代表GetFrontProcess (&pn);
GetFrontProcess函数返回在前台运行的进程的进程序列号。如果检测到错误,则返回“undef”。
签名:
//carbon or cocoa
OSErr GetFrontProcess (ProcessSerialNumber *PSN);
代表ShowHideProcess(&pn,false);
签名:
#include <Carbon/Processes.h> //carbon only?
OSErr ShowHideProcess(const ProcessSerialNumber *psn, Boolean visible)
答案 1 :(得分:0)
您可以在Qt应用程序中编译Objective-C,所以请执行下一步:
将此添加到 .pro 文件中:
macx {
LIBS += -framework Foundation
LIBS += -framework AppKit
OBJECTIVE_SOURCES += objectivec.mm
HEADERS += objectivec.h
}
创建一个名为 objective.h 的文件:
#ifndef __ObjectiveC_h_
#define __ObjectiveC_h_
class ObjectiveC
{
public:
static void HideWindow();
};
#endif
另一个名为 objective.mm :
#include "objectivec.h"
#import <Foundation/Foundation.h>
#import <AppKit/AppKit.h>
#import <CoreData/CoreData.h>
void ObjectiveC::HideWindow()
{
[NSApp hide:nil];
}
然后在任何你喜欢的地方使用它:
#ifdef Q_OS_MAC
#include "objectivec.h"
#endif
#ifdef Q_OS_MAC
ObjectiveC *obc = new ObjectiveC();
obc->HideWindow();
#endif