The*_*ght 3 c++ macos notifications qt core-foundation
我正在用Qt开发一个守护进程,并希望向Mountain Lion通知中心发送消息: -

Qt似乎缺乏对此的支持,这并不奇怪,因为它不是跨平台的.
如果我使用的是Cocoa,看起来我会将NSUserNotificationCenter类与NSUserNotification一起使用.
到目前为止,每当我看到一个Foundation类时,总会有一个匹配的Core Foundation类,但似乎没有CFUserNotificationCenter,但是有一个CFUserNotification.
那么,我是否正确,NSNotificationCenter是Cocoa用于此目的,是否可以在没有Cocoa的情况下向Notification Center发送消息?
如果有可能,请有人在C或C++中发布代码示例,或者至少指出要使用哪些函数?
您可以轻松地将Qt/C++代码与Cocoa/Objective-C集成.XCode支持Objective-C++,它是C++和Objective-C的混合体.这些文件将具有.mm扩展名,并使用该OBJECTIVE_SOURCES变量添加到您的QMake项目中(遗憾的是,不在官方的QMake文档中).所以只需将NSUserNotification代码添加到C++类中即可.
QMake项目文件
HEADERS += Foo.h
OBJECTIVE_SOURCES += Foo.mm
LIBS += -framework Foundation
INCLUDEPATH += /System/Library/Frameworks/Foundation.framework/Versions/C/Headers
Run Code Online (Sandbox Code Playgroud)
foo.h中
#ifndef FOO_H
#define FOO_H
class Foo {
public:
void test();
};
#endif
Run Code Online (Sandbox Code Playgroud)
Foo.mm
#include "foo.h"
#include <NSUserNotification.h>
void Foo::test() {
NSUserNotification *userNotification = [[[NSUserNotification alloc] init] autorelease];
userNotification.title = @"My Great Title";
userNotification.informativeText = @"Blah Blah Blah";
[[NSUserNotificationCenter defaultUserNotificationCenter] deliverNotification:userNotification];
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2167 次 |
| 最近记录: |