2010-08-25 35 views
14

Tôi đã điều sau đây:QT mở mặc định tập tin thám hiểm trên * nix

QProcess *process = new QProcess(this); 
QString path = QDir::toNativeSeparators(QApplication::applicationPath); 
#if defined(Q_OS_WIN) 

process->start("explorer.exe", QStringList() << path); 

#elif defined(Q_OS_MAC) 

process->start("open", QStringList() << path); 

#endif 

Làm thế nào tôi có thể đạt được các hành vi tương tự cho phép nói Ubuntu?

Trả lời

37

Sử dụng QDesktopServices và chức năng của nó openURL:

QString path = QDir::toNativeSeparators(QApplication::applicationDirPath()); 
QDesktopServices::openUrl(QUrl::fromLocalFile(path)); 

Nó sẽ làm việc với tất cả các OS'es. Tôi đã thử nghiệm nó chỉ trong Windows.

+1

Hoạt động như sự quyến rũ trên Windows XP SP2, Mac OSX 10.6.4 và Ubuntu. –

+0

Hmm ... đối với tôi (trên Windows), điều này thực sự đang mở tệp bằng cách sử dụng liên kết tệp mặc định. Ví dụ, nó mở một tệp .wav trong Media Player thay vì điều hướng đến nó trong Windows Explorer. Bất kỳ ý tưởng làm thế nào để có được hành vi giống như Explorer? – aardvarkk

+0

Tôi đoán rằng bạn phải vượt qua thư mục chứa tệp dưới dạng đối số thay vì tệp. –

Các vấn đề liên quan