Qt中调用当前工程中的文件,为何出现如此怪异问题?
//代码:
#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");
调用其boolexists () const
和 QStringabsoluteFilePath () const
两个方法,看能否正常检查出该文件来
[解决办法]
See also isReadable(), isWritable(), and permission().
感觉应该是你要启动的那个.exe的权限问题
[解决办法]
http://www.qtcentre.org/threads/52236-SOLVED-QDesktopServices-openUrl()-not-working-on-a-Win7-machine
你看上面这个帖子的说明 貌似在win7下 要用绝对路径
ok.. I got the occasion to try back my collegue pc.. I just keep it posting any how in case someone has the same issue.
For some strange reasons on Ubuntu and Windows XP the relative position was fine (foth in the Qt Creator and in the installed application) but in Windows 7 it seems it wants the full path...
[解决办法]
那你用QFileinfo检查下权限
看对于相对路径和绝对路径 是否有不同的permission
[解决办法]