使用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,但效果相同。
答案 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()));