Qt QDesktopServices :: openUrl()错误2

时间:2013-08-12 21:01:00

标签: qt service desktop shellexecute openurl

使用QDesktopServices :: openUrl()函数打开文件时遇到问题。

我有一个生成文件绝对地址的代码,但是当我尝试运行它时,我得到shellExecute错误2.

这是我使用的代码:

void openFileMainWindow::runSong() {
QAction *act = qobject_cast<QAction *>(sender());

QString addr = "file:///";
addr.append(QString(act->data().toString()));

QByteArray tempArray  = addr.toUtf8();
const char * addrW    = tempArray.data();

QMessageBox::warning(this, tr("Info"), tr("You are trying to open file:\n%1").arg(addrW), QMessageBox::Ok);

QDesktopServices::openUrl(QUrl(addrW, QUrl::TolerantMode)); 

}

当我尝试将路径manualy写为“file:///.../file.mp3”时,它运行良好,但为什么生成的地址不是? 我也尝试过只使用QString addr,但效果相同。

2 个答案:

答案 0 :(得分:0)

确定编码问题。 QUrl将QString作为第一个参数。在将它压缩到QByteArray然后取一个const char *地址然后让QUrl将其转换回QString之后,不知道你的初始QString addr剩下什么。

为什么不将你的地址传递给QUrl的任何特殊原因?没有tempArray? addrW?

答案 1 :(得分:0)

QUrl 有一个 fromLocalFile() 函数:

QDesktopServices::openUrl(QUrl::fromLocalFile(act->data().toString()));