Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt Can';t使用QDataStream将Qlist写入文件_Qt_Operator Overloading_Qlist - Fatal编程技术网

Qt Can';t使用QDataStream将Qlist写入文件

Qt Can';t使用QDataStream将Qlist写入文件,qt,operator-overloading,qlist,Qt,Operator Overloading,Qlist,我正在尝试使用4.7.3开发一个Qt应用程序,其中包括将QList写入flie 我的班级是: class Task { public: QString ta, desc; QTime ti; QDate da; int pri, diff; bool ala; }; 对应的QList为:QList任务 我的档案是: QFile theFile("dataBase"); QDataStream stream(&

我正在尝试使用4.7.3开发一个Qt应用程序,其中包括将QList写入flie

我的班级是:

class Task  
{  
public:  
    QString ta, desc;  
    QTime ti;  
    QDate da; 
    int pri, diff;  
    bool ala;  
};  
对应的QList为:QList任务

我的档案是:

QFile theFile("dataBase");  
QDataStream stream(&theFile);  
stream.setVersion(QDataStream::Qt_4_7);
全文如下:

theFile.open(QIODevice::ReadOnly);  
stream >> tasks;
写:

theFile.open(QIODevice::WriteOnly);  
stream << tasks;  
theFile.open(QIODevice::WriteOnly);
流运算符存在,我找不到这些错误的任何原因

请帮助任何人,因为这是一个非常重要的应用,我必须制作

提前感谢….

您需要定义自己的操作员进出。。。大概是这样的:

.h文件:

class myClass{
public:
    QString name;
    QString gender;
    QDate birthDay;
    QString job;
    QString address;
    int phoneNo;
};

QDataStream &operator <<(QDataStream &stream, const myClass &myclass);
QDataStream &operator >>(QDataStream &stream, myClass &myclass);
class-myClass{
公众:
QString名称;
性别;
生日;
QString作业;
QString地址;
int-phoneNo;
};
QDataStream和运算符(QDataStream和stream、myClass和myClass);
.cpp文件:

QDataStream &operator <<(QDataStream &stream, const myClass &myclass)
{
    stream<<myclass.address;
    stream<<myclass.birthDay;
    stream<<myclass.gender;
    stream<<myclass.job;
    stream<<myclass.name;
    stream<<myclass.phoneNo;
    return stream;
}

QDataStream &operator >>(QDataStream &stream, myClass &myclass)
{
    stream>>myclass.address;
    stream>>myclass.birthDay;
    stream>>myclass.gender;
    stream>>myclass.job;
    stream>>myclass.name;
    stream>>myclass.phoneNo;
    return stream;
}
QDataStream&运算符myclass.phoneNo;
回流;
}

请显示运算符重载,并确保定义在您使用它的位置可见(您是否在
Task.h
文件中定义了它?)我包含的qdatastream.h标题中已经有了定义。难道它们就不够了吗?看起来你没有为流运算符()提供超载,你不能指望C++神奇地知道如何序列化你的类。它神奇地工作了!谢谢克里斯和图腾!