在OS X上,在某些文件上运行应用程序的常用方法是将它们放在Finder中的应用程序包上。我需要获取这些文件的列表。
我试图从命令参数中获取它们(比如在Windows中),但命令行只包含程序路径。
如何使用Qt 5.2或Cocoa框架获取此列表?
答案 0 :(得分:3)
要接受使用您的应用程序打开的文件,您需要接受针对您的应用程序代表的openFile
调用,例如
- (BOOL)application:(NSApplication *)theApplication openFile:(NSString *)filename
{
NSLog(@"%@", filename);
return YES;
}
现在,如果您想要将拖动的文件接受到窗口上,您必须实现NSDraggingDestination
协议,这里有几个关于处理该API的答案。
现在对于Qt,您需要实现event
处理程序,并处理QEvent::FileOpen
事件,其参数为QFileOpenEvent
,例如。
class MyApp : public QApplication
{
protected:
bool event(QEvent *);
};
bool
MyApp::event(QEvent *event)
{
switch (event->type()) {
case QEvent::FileOpen: {
QFileOpenEvent *evt = static_cast<QFileOpenEvent *>(event));
// Do something with event->file() - the file that was opened
return true;
}
default:
return QApplication::event(event);
}
}