2014-01-14 26 views
0

在OS X上,在某些文件上運行應用程序的常用方式是將它們放在Finder中的應用程序包中。我需要獲取這些文件的列表。如何獲取在Mac OS X上拖放到應用程序二進制文件的文件列表?

我試圖讓他們從命令參數(如在Windows中),但命令行只包含程序路徑。

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

+1

你的意思是如何獲得'main()'中的命令行參數? – trojanfoe

+0

這個問題應該清楚給任何使用mac的人!在應用程序可執行文件上放置文件的操作可能不常用於Windows。提名重新開放。 –

+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); 
    } 
} 
+0

問題是(令人困惑地)用objective-c和qt來標記... – trojanfoe

+0

@trojanfoe確實,我必須在發佈之前檢查我的Qt實現 – Petesh

+0

@Petesh:是的,我看到了,立即撤銷了我的downvote。謝謝關心。 – lpapp

相關問題