QDesktopServices::openUrl(QUrl(new_path).toEncoded());
Данный вызов не пройдет т.к. toEncoded() возвращает QByteArray
URL по определению воспринимает только латинский алфавит. Все остальное должно быть закодировано в форму %XX где XX это шестнадцатиричный код символа.
Ничего не нужно руками перекодировать, QUrl сам все сделает
сейчас на примере проверил все прекрасно вызывается:
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QTextCodec::setCodecForTr(QTextCodec::codecForLocale());
QString path = QObject::tr("C:/Users/sLiva/Desktop/Дипломный проект");
QDesktopServices::openUrl(QUrl("file:///" + path));
Widget w;
w.show();
return a.exec();
}