在OS X上,在某些文件上運行應用程序的常用方式是將它們放在Finder中的應用程序包中。我需要獲取這些文件的列表。如何獲取在Mac OS X上拖放到應用程序二進制文件的文件列表?
我試圖讓他們從命令參數(如在Windows中),但命令行只包含程序路徑。
如何使用Qt 5.2或Cocoa框架獲取此列表?
在OS X上,在某些文件上運行應用程序的常用方式是將它們放在Finder中的應用程序包中。我需要獲取這些文件的列表。如何獲取在Mac OS X上拖放到應用程序二進制文件的文件列表?
我試圖讓他們從命令參數(如在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);
}
}
你的意思是如何獲得'main()'中的命令行參數? – trojanfoe
這個問題應該清楚給任何使用mac的人!在應用程序可執行文件上放置文件的操作可能不常用於Windows。提名重新開放。 –
這確實是一個很好的問題,需要一個答案。榮譽給伊戈爾和彼得斯。 –