QT/C++,OS X:退出应用程序时可选择隐藏(),以便应用程序继续运行,并在单击dock中的图标后再次显示
QT/C++, OS X: Alternative for hide() when quiting app so that app keeps running and shows up again after clicking icon in dock
我在Mac OS X上使用带有c++的QT。关闭应用程序时,我使用hide()来保持应用程序运行并隐藏窗口。
但之后,当我点击停靠区中的应用程序图标时,它就不再显示了。
我在这里读到,使用以下代码而不是hide()应该可以修复这种行为:
ProcessSerialNumber pn;
GetFrontProcess (&pn);
ShowHideProcess(&pn,false);
但我不知道如何使用该代码:s有人能解释一下如何使用这个代码,或者如何解决我的问题吗?
谢谢!
您可以在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
另一个被称为物镜.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
您所说的代码是本机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)
相关文章:
- 试图在visual studio上用C++创建一个桌面应用程序
- FFmpeg:制作一个应用程序比直接使用ffmepg更好吗
- 在C应用程序中运行C++(带有STL)函数
- 使用VerQueryValue检索应用程序的文件描述
- Qt C++静态thread_local QNetworkAccessManager是线程应用程序的好选择吗
- 使用调试/崩溃报告将应用程序部署到客户端
- C++控制台应用程序阻止退出
- 码头化的C++应用程序是否向后兼容早期的内核版本
- 将应用程序从32位移植到64位时出现问题
- 如何改变c++应用程序的视觉效果
- WM_CTLCOLORSTATIC从未在WIN32应用程序中触发
- PC中的程序和PHONE中的本机描述应用程序之间的数据连接
- 应用程序崩溃并显示"symbol _ZdlPvm, version Qt_5 not defined in file libQt5Core.so.5 with link time reference"
- 示例外壳应用程序显示的 V8 "segmentation fault (core dumped)"错误
- phytec phyBOARD iMX-6在从闪存而不是SD卡运行qt5 opengles应用程序时表现不佳(FPS减半
- 为什么导入Mixed native/CLR lib.dll的本机C++应用程序没有在Mixed lib.dll中的外部变
- 如何从Windows应用程序输出到标准?
- C++应用程序 MySQL odbc 数据库连接错误:在引发"otl_tmpl_exception<>"实例后终止调用
- 如何在 64 位 vb.net Windows 应用程序中引用 32 位 dll
- QT/C++,OS X:退出应用程序时可选择隐藏(),以便应用程序继续运行,并在单击dock中的图标后再次显示