为什么我在这段代码中出错

时间:2013-03-08 05:21:46

标签: qt user-interface qfile

我看了几个不同的教程,所有代码看起来都一样,但是当我尝试编译它时,我得到两个错误。它们与调用'(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);

2 个答案:

答案 0 :(得分:0)

你的问题似乎与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.
}

还有其他方法可以实现这一点,但我会留给你研究我上面建议的内容。

答案 1 :(得分:0)

只需更改

file.setDevice(&namefile);