qt的QFile读取文件失败

尘中远 2013-09-27 10:19:02
//装载数据库内容
QFile file(xmlFile);
qDebug()<<file.exists();
if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
{
……
}
else
{
qDebug()<<file.error();
qDebug()<<file.errorString();
}


输出结果:
true
0
"Unknown error"

也就是说文件是存在但就是打不开,我当时以为是路径有中文会影响,结果改了纯英文也不行,蛋疼死了,用记事本什么的都能轻松打开,就是QFile不能,请问各位有没有遇到这样的情况?
...全文
5142 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
懒懒的吉他手 2013-09-27
  • 打赏
  • 举报
回复
if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) 这句话的意思是如果文件打不开执行这个,else里面才是打开的吧?
懒懒的吉他手 2013-09-27
  • 打赏
  • 举报
回复
文件路径有没有空格?
尘中远 2013-09-27
  • 打赏
  • 举报
回复
引用 5 楼 adeng1919 的回复:
bool QFile::open ( OpenMode mode ) [virtual] Reimplemented from QIODevice::open(). Opens the file using OpenMode mode, returning true if successful; otherwise false. 打开成功,返回true,你又加了个'!',所以是失败的时候执行了if,成功执行else
囧死,超级低级错误谢谢了~
懒懒的吉他手 2013-09-27
  • 打赏
  • 举报
回复
bool QFile::open ( OpenMode mode ) [virtual] Reimplemented from QIODevice::open(). Opens the file using OpenMode mode, returning true if successful; otherwise false. 打开成功,返回true,你又加了个'!',所以是失败的时候执行了if,成功执行else
尘中远 2013-09-27
  • 打赏
  • 举报
回复
引用 1 楼 adeng1919 的回复:
文件路径有没有空格?
没有空格,后来我自己在d盘根目录下建立一个txt都打不开,x64,win7的
尘中远 2013-09-27
  • 打赏
  • 举报
回复
引用 2 楼 adeng1919 的回复:
if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) 这句话的意思是如果文件打不开执行这个,else里面才是打开的吧?
是就是没打开,所以执行else了
Qt Creator 多线程读取文件到程序显示 利用QT Creator多任务读取一个文档到程序里 为了防止直接读取文件里的内容太大而发生卡顿,于是多线程读取将更高效的解决这个问题。 效果图如下: 其中pro文件无需改动,默认就好,头文件h里面的内容为 #ifndef MAINWINDOW_H #define MAINWINDOW_H #include #include #include QT_BEGIN_NAMESPACE namespace Ui { class MainWindow; } QT_END_NAMESPACE class MyObj; class MyObj : public QObject { Q_OBJECT public: MyObj(); //新的线程 signals: void toLine(QString line); private slots: void doWork(); }; class MainWindow : public QMainWindow { Q_OBJECT public: MainWindow(QWidget *parent = nullptr); ~MainWindow(); private slots: void appendText(QString); //定义一个槽 private: Ui::MainWindow *ui; QThread *t; MyObj *obj; }; #endif // MAINWINDOW_H 而MAIN主文件的内容为了防止中文乱码做了如下修改: #include "mainwindow.h" #include #include int main(int argc, char *argv[]) { QApplication a(argc, argv); //设置中文字体 防止乱码 a.setFont(QFont("Microsoft Yahei", 9)); //设置中文编码 #if (QT_VERSION <= QT_VERSION_CHECK(5,0,0)) #if _MSC_VER QTextCodec *codec = QTextCodec::codecForName("GBK"); #else QTextCodec *codec = QTextCodec::codecForName("UTF-8"); #endif QTextCodec::setCodecForLocale(codec); QTextCodec::setCodecForCStrings(codec); QTextCodec::setCodecForTr(codec); #else QTextCodec *codec = QTextCodec::codecForName("UTF-8"); QTextCodec::setCodecForLocale(codec); #endif MainWindow w; w.show(); return a.exec(); } 接下来重点来了,源文件CPP里为 #include "mainwindow.h" #include "ui_mainwindow.h" #include #include #include #include #include MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this); t = new QThread(); //QThread obj = new MyObj(); obj->moveToThread(t); qDebug()<<"main thread:"<<QThread::currentThread(); connect(t,SIGNAL(started()), obj, SLOT(doWork())); connect(obj,SIGNAL

16,814

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧