我在使用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)); }
当我尝试手动编写path为"file:///.../file.mp3“,它工作良好,但为什么生成的地址不是?”我也尝试了只使用QString地址,但结果相同。
发布于 2013-08-13 05:10:37
这肯定是一个编码问题。QUrl接受QString作为第一个参数。不知道在您将初始QString地址压缩到QByteArray中,然后获取const char *地址,最后让QUrl将其转换回QString之后,剩下的是什么。
你有什么特别的理由不直接把你的地址传给QUrl吗?没有tempArray?addrW?
发布于 2021-04-26 23:06:23
QUrl有一个fromLocalFile()函数:
QDesktopServices::openUrl(QUrl::fromLocalFile(act->data().toString()));https://stackoverflow.com/questions/18196624
复制相似问题