//代码:
#include <QApplication>
#include <QtGui>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QString str = "code/asd.doc";
if(!QDesktopServices::openUrl(QUrl::fromLocalFile(str))) {
QMessageBox::about(0, "asd",
"asdf");
}
return app.exec();
}
//目录
|-test-build-desktop-Qt_4_7_4_for_Desktop_-_MinGW_4_4__Qt_SDK____
|-code
|-asd.doc
|-debug
|-main.o
|-test.exe
|-release
|-asd.doc
|-Makefile
|-Makefile.Debug
|-Makefile.Release
将代码中的str改为 "asd.doc",程序运行成功,调用了该文档!
但是str为"code/asd.doc",程序就失败,没有调用成功!
我不知道哪里错了,我以前弄这个的时候,就是这么调用的,可今天就不对了,
//以前做的笔记如下:
QDesktopServices::openUrl(QUrl::fromLocalFile("test/test.dsw"));//同时可利用其还回值判断是否成功打开。
文件地址:
绝对路径法:
E:\\aa\\aa\\aa.exe
相对路劲(当前工程里):
aa/aa/aa.dsw
如果您说相对路劲应该是和.exe同目录下,那么我告诉您,
我将code文件夹放入了debug文件中和.exe同目录,但是运行还是错误,不能成功调用!
在线的等前辈的解答啊!
我以前是在XP下弄的,现在是W7,难道于系统有关么? 应该不是哦!
------解决方案--------------------
code/asd.doc改成./code/asd.doc呢
用QFileinfo info("code/asd.doc");
调用其bool exists () const
和 QString absoluteFilePath () const
两个方法,看能否正常检查出该文件来
------解决方案--------------------
看你的描述 感觉像是权限问题的设置造成的
QFileInfo里面有很多方法可以调用
比如
bool QFileInfo::isExecutable () const
Returns true if the file is executable; otherwise returns false.
See also isReadable(), isWritable(), and permission().
再比如用permission检查是否有执行权限
bool QFileInfo::permission ( QFile::Permissions permissions ) const
Tests for file permissions. The permissions argument can be several flags of type QFile::Permissions OR-ed together to check for permission combinations.
On systems where files do not have permissions this function always returns true.
Example:
QFileInfo fi("/tmp/archive.tar.gz");
if (fi.permission(QFile::WriteUser
------解决方案--------------------
QFile::ReadGroup))
qWarning("I can change the file; my group can read the file");
if (fi.permission(QFile::WriteGroup
------解决方案--------------------
QFile::WriteOther))
qWarning("The group or others can change the file");
和
bool QFileInfo::isExecutable () const
Returns true if the file is executable; otherwise returns false.