如何在Mac OS X上将文件列表拖放到应用程序二进制文件上



在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);
    }
}

最新更新