0

いくつかの異なるチュートリアルを見てきましたが、すべてのコードは同じように見えますが、コンパイルしようとすると 2 つのエラーが発生します。それらは、'(QFile) (QString&)' への呼び出しと一致しません。'(QTextSteam) (Qfile)' への呼び出しと一致しません。理由を教えてください。以下は、さらに質問する必要がある場合の私のコードの一部です。

コードのヘッダーチャンク

private:
QLabel *label;
QTextEdit *left;
QTextEdit *right;
QLineEdit *user;
QTextStream file;
QFile namefile;
QString name;
QString n;

私のソースコード

n ="name.txt";
namefile(n);
if (!namefile.open(QFile::ReadOnly))
{
    return;
}
file(&namefile);
name=file.readLine();
right->setText(name);
4

2 に答える 2

0

あなたの質問は、Qt よりも C++ に関係しているようです。特に、C++ の初期化リストと、クラス メンバーが一般的にどのように構築されるかを調べることは価値があります。

いずれにせよ、「私のソースコード」としてリストしたコードは、クラスのコンストラクターにあると想定しています。1 つのオプションは、初期化の順序でリストされるように、最初にプライベート メンバーの順序を変更することです。

private:
QString n;
QFile namefile;
QTextStream file;
QString name;

次に、クラス コンストラクターの初期化リストでそれらを初期化します。

MyClass::MyClass()
   :n("name.txt")
   ,namefile(n)
   ,file(&namefile)
{
   if (!namefile.open(QIODevice::ReadOnly))
   {
      return;
   }

   name = file.readLine();

   // Rest of your code goes here.
}

これを達成する方法は他にもありますが、上記で提案したことを調査するのはあなたに任せます.

于 2013-03-08T05:37:55.430 に答える