web-dev-qa-db-ja.com

QIODevice :: read:デバイスが開いていません

ファイルから読み取ってテキスト編集に入れようとすると、QIODevice :: read:deviceが開いていないと表示され続けます。 .txtファイルは私の.qrcおよび.cppファイルと同じ場所にあります。私はオンラインからステップバイステップガイドに従っていました。私の理解では、彼らは第4四半期から第5四半期に移ったときに何かを変えました。誰かが私がこれを修正する方法について何かヒントがありますか?ありがとう

//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();
};
8
user3878223

.qrcリソースファイルから読み取る場合は、qmakeを使用可能にする前に実行する必要があります(QtCreatorで「ビルド」->「qmakeの実行」)。

7
randag

ファイルのabsoluteパスをQFile::open()に渡しておらず、ファイルを開いた結果を確認していません。あなたの場合、それは失敗であり、open()はfalseを返しますが、それを引き起こした問題(間違ったパス)を修正する代わりに、それを無視しています。

これは、Qt 4-> Qt 5のアップグレードと関係があり、アプリケーションがたまたま見つけた現在のディレクトリについて間違ったことを想定していることと関係があります。一般的に、現在のディレクトリ(または作業ディレクトリ)は任意であり、プラットフォームおよび状況に固有であり、完全に制御できません。ユーザーが現在の作業ディレクトリを暗黙的に参照するファイル名を指定しない限り(たとえば、コマンドライン引数を指定した相対パスとして)、絶対ファイルパスを使用する必要があります。そうしないと機能しません。

2
Kuba Ober

Qtバージョンとは何の関係もありません。 .txtファイルが.cppファイルと同じディレクトリにある場合でも、ディレクトリを追加する必要があります。私は同じ問題を抱えていて、その単純な解決策はうまくいきました。アルマンアレフィ

0
user11014544

この問題が発生しましたが、QtCreatorが実際に.qrcファイルをプロジェクトに追加していないことが判明しました。 MacでQtCreator 4.1.0を使用していますが、新しいプロジェクトの作成後にプロジェクトビューが常に表示されるとは限らず、最初にCreatorを再起動する必要があります。この問題の私のバージョンはそれに関連している可能性があります。

0
Niall

Qt5はMSVC2010で動作しないことがあるため、Qtのバージョンに関連している可能性があります。 Qt 5.4を使用していますが、MSVC2010 OpenGLをコンパイラーとして使用しているときに、コードで同じエラーが発生しました。 MinGW 32ビットを手動で追加してコンパイラとして使用しましたが、機能しました。 P.S. Qt 5.4用のMSVC2013をインストールしていません。MSVC2010OpenGLでエラーなしで動作することがありますが、この場合は動作しません。

0
rela