为什么我得到一个错误在这段代码



我看过几个不同的教程,所有的代码看起来都一样,但当我试图编译它时,我得到了两个错误。它们不匹配调用'(QFile) (QString&)'不匹配调用'(QTextSteam) (QFile) '。你能解释一下原因吗?以下是我的部分代码,如果你需要更多的,请直接询问。

my header chunk of code

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);

你的问题似乎更多地与c++有关,而不是与Qt有关。特别是,你应该研究一下c++初始化列表,以及类成员是如何构造的。

在任何情况下,我都假设您列为"我的源代码"的代码位于类的构造函数中。一种选择是首先重新排序私有成员,使它们按照初始化的顺序列出:

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.
}

还有其他方法可以做到这一点,但我将把它留给你去研究我上面的建议。

直接修改

file.setDevice(&namefile);

相关内容

  • 没有找到相关文章

最新更新