objective-c - 如何在 Mac OS X 上获取拖放到应用程序二进制文件上的文件列表?

标签 objective-c macos cocoa qt

在 OS X 上,在某些文件上运行应用程序的常见方法是将它们放在 Finder 中的应用程序包中。我需要获取这些文件的列表。

我尝试从命令参数中获取它们(就像在 Windows 中一样),但命令行仅包含程序路径。

如何使用 Qt 5.2 或 Cocoa 框架获取此列表?

最佳答案

要接受使用应用程序打开的文件,您需要接受应用程序委托(delegate)的 openFile 调用,例如

- (BOOL)application:(NSApplication *)theApplication openFile:(NSString *)filename
{
    NSLog(@"%@", filename);
    return YES;
}

现在,如果您想接受拖动的文件到窗口上,您必须实现 NSDraggingDestination协议(protocol),这里有几个关于处理该 API 的答案。

现在对于Qt,您需要实现事件处理程序,并处理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);
    }
}

关于objective-c - 如何在 Mac OS X 上获取拖放到应用程序二进制文件上的文件列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21116259/

相关文章:

objective-c - 检测 NSTextField 何时变为事件状态

ios - parse.com objective-c 获取PfUser对象及相关对象

iOS:将字符串参数传递给函数,但另一端为 NULL?

iOS 通过单击按钮在解析服务器连接之间切换

cocoa - 在 OSX 上的 Cocoa 中以全屏模式处理事件

macos - NSOutlineTableView 最后一个元素后崩溃

android - 通过 osx 命令行构建 tess-two 的问题

sql - 将模型对象保存到 SQL DB 中

ios - 具有双值的 TableView 单元格

objective-c - Cocoa:以编程方式显示/隐藏带有自定义 NSView 的自定义 NSWindow