Все, что я читаю, говорит о том, что QDesktopServices::openUrl
это независимый от платформы способ открыть документ с помощью программы по умолчанию, и он прекрасно работает почти все время.
Я говорю почти, потому что это, кажется, всегда терпит неудачу, если я передаю ему сетевой путь. Прочесывая источник, я вижу, что ShellExecute возвращает код ошибки 2.
Пример:
QUrl localpath = QUrl::fromLocalFile("C:/temp/myfile.txt");
QUrl networkpath = QUrl::fromLocalFile("//192.168.0.5/my folder/myfile.txt");
QDesktopServices::openUrl(localpath); //works fine
QDesktopServices::openUrl(networkpath); //always fails
Есть ли способ, которым я могу очистить сетевой путь, чтобы открыть правильно? Я использую Qt 4.8 в Windows. Переключение прямой косой черты на обратную косую черту не помогает.
Вы должны использовать QUrl :: TolerantMode, если у вас есть пробелы в вашем пути.
попробуй это:
QDesktopServices::openUrl(QUrl("file:////192.168.0.5/my folder/myfile.txt", QUrl::TolerantMode));
Других решений пока нет …