在OS X上,在某些文件上运行应用程序的常用方法是将它们放在Finder中的应用程序包上。我需要获取这些文件的列表。
我试图从命令参数中获取它们(如在 Windows 中),但命令行仅包含程序路径。
如何使用Qt 5.2或Cocoa框架获取此列表?
要接受使用应用程序打开的文件,您需要接受应用程序委托的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);
}
}