QIODevice :: read:设备未打开

时间:2014-07-25 19:22:27

标签: c++ qt qt4 qt-creator

我试图从文件中读取并进入文本编辑,它一直说QIODevice :: read:device not open。 .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();
};

6 个答案:

答案 0 :(得分:7)

如果您正在读取.qrc资源文件,则必须先运行qmake(Qt Creator中的“Build-&gt; Run qmake”)。

答案 1 :(得分:2)

您没有将文件的绝对路径传递给QFile::open(),并且您没有检查打开文件的结果。在你的情况下,它是一个失败,open()返回false,但你忽略它,而不是修复导致它的问题(错误的路径)。

这与Qt 4有关 - &gt; Qt 5升级,以及与您假设关于您的应用程序恰好发现自己的当前目录的错误信息的所有事情。一般来说,当前目录(或工作目录)是任意的,特定于平台和环境,完全不受您的控制。除非用户为您提供了隐式引用当前工作目录的文件名(例如,作为给定命令行参数的相对路径),否则您必须使用绝对文件路径或事情根本不起作用。

答案 2 :(得分:0)

它可能与Qt的版本有关,因为Qt5有时不适用于MSVC2010。 当我使用MSVC2010 OpenGL作为编译器时,我有Qt 5.4和我的代码给出了同样的错误。我手动添加了MinGW 32bit以将其用作编译器并且工作正常。 附:我没有为Qt 5.4安装MSVC2013,它有时可以在没有错误的情况下使用MSVC2010 OpenGL,但在这种情况下不行。

答案 3 :(得分:0)

我遇到了这个问题,结果发现Qt Creator实际上没有将.qrc文件添加到我的项目中。我在Mac上使用Qt Creator 4.1.0并且在创建新项目后,项目视图始终不会被填充,首先需要重新启动Creator。我的这个问题的版本可能与此有关。

答案 4 :(得分:0)

它与Qt版本无关。 即使您的.txt文件与.cpp文件位于同一目录中,您仍然需要添加目录。我有同样的问题,那个简单的解决方案很好用。 阿尔曼·阿雷菲(Arman Arefi)

答案 5 :(得分:0)

在大多数情况下,如果您关闭未打开的文件-只需删除close语句即可,例如:

file->close();

只需将其删除;)