当前位置: 代码迷 >> QT开发 >> Qt中调用当前工程中的文件,为何出现如此怪异有关问题
  详细解决方案

Qt中调用当前工程中的文件,为何出现如此怪异有关问题

热度:98   发布时间:2016-04-25 04:04:47.0
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");
调用其bool exists () const
和 QString absoluteFilePath () const
两个方法,看能否正常检查出该文件来
------解决方案--------------------
引用:
以前在XP的系统上可以的,现在换W7了,难道是W7的原因么?
求指教啊!
求顶啊!
求顶啊!
求顶啊!


看你的描述 感觉像是权限问题的设置造成的
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.
  相关解决方案