QIODevice::read:设备未打开
QIODevice::read: device not open
我试图从文件中读取并放入文本编辑,它一直说QIODevice::read:device未打开。txt文件与我的.qrc和.cpp文件位于相同的位置。我是从网上一步一步的指导。从我的理解来看,当他们从第四季度转到第五季度时,他们改变了一些东西。有没有人有任何提示我如何才能解决这个问题。由于
//My findstuff.h
#ifndef FINDSTUFF_H
#define FINDSTUFF_H
#include <QWidget>
namespace Ui {class FindStuff;}
class FindStuff : public QWidget{
Q_OBJECT
public:
explicit FindStuff(QWidget *parent = 0);
~FindStuff();
private slots:
void on_goButton_clicked();
private:
Ui::FindStuff *ui;
void getTextFile();
};
如果你从。qrc资源文件中读取,你必须运行qmake(在Qt Creator中"Build-> run qmake"),然后才能使用。
您没有将绝对路径传递给QFile::open()
,并且您没有检查打开文件的结果。在您的例子中,这是一个失败并且open()
返回false,但是您忽略了它,而不是修复导致它的问题(错误的路径)。
这与Qt 4 -> Qt 5升级没有任何关系,而是与您假设应用程序碰巧发现自己所在的当前目录错误有关。一般来说,当前目录(或工作目录)是任意的,是特定于平台和环境的,完全不受您的控制。除非用户提供给你一个隐式引用到当前工作目录的文件名(例如,作为给定命令行参数的相对路径),否则你必须使用绝对文件路径,否则事情根本不会起作用。
这可能与Qt的版本有关,因为Qt5有时不能与MSVC2010一起工作。我有Qt 5.4和我的代码给出了同样的错误,当它与MSVC2010 OpenGL作为编译器工作时。我手动添加了MinGW 32bit来使用它作为编译器,它工作了。P.S.我没有为Qt 5.4安装MSVC2013。,它有时与MSVC2010 OpenGL一起工作而没有错误,但在这种情况下不是。
这主要是在关闭未打开的文件时出现的情况,因此只需删除close语句,例如:
file->close();
我有这个问题,原来Qt Creator并没有实际添加。qrc文件到我的项目。我在Mac上使用Qt Creator 4.1.0,项目视图并不总是在创建新项目后填充,首先需要重新启动Creator。我对这个问题的看法可能与此有关。
与Qt版本没有任何关系。即使.txt文件与.cpp文件位于同一目录中,您仍然需要添加该目录。我也遇到过同样的问题,这个简单的解决方案效果很好。阿尔曼Arefi
- 使用 ImageIO.read() 生成的图像是否仍然使用传递给它的相同内存?
- std::ifstream::read 不会读取所有 512 字节,并设置 EOF 和失败位
- Qt 写入 xml: QIODevice::write (QFile, "D:/logs.xml" ): 设备未打开
- write() 和 read() 中几乎没有混淆
- C++ TCP 套接字通信 - 连接按预期工作,几秒钟后失败,没有收到新数据,read() 和 recv() 块
- 为什么调试器引发"read access violation. this was nullptr"异常?
- 对同一文件使用 .read 的次数是否有限制?
- Win32 API - HWND "{unused = ???} Unable to read memory"错误
- 为什么我会"Invalid read of size 8"?(瓦尔格林德)
- QDataStream read to QVector
- asio::read() 需要很长时间,使用 asio::write 没有问题
- Read OpenCV Mat 16bit to QImage 8bit Greyscale
- 如果 I/O read() 处于阻塞阶段,如何使用 Ctrl+C 退出 C++ 程序?
- 如何将 (serverClients[i].read() 传递给 ESP8266 上的字节数组
- 将 Lora.read() 转储到数组
- 无法通过 FUSE 文件系统"read"任何内容
- 指向 std::unrodered_map 中元素的指针返回'Read access violation'
- 封送指向结构异常"cannot Read or Write protected memory"的指针数组的指针数组
- QIODevice::read:设备未打开远程JSON文件QT
- QIODevice::read:设备未打开