Qt 保存QWebEngineHistory并将其加载到QWebEnginePage

Qt 保存QWebEngineHistory并将其加载到QWebEnginePage,qt,browser-history,qtwebengine,qwebenginepage,Qt,Browser History,Qtwebengine,Qwebenginepage,我需要保存QWebEnginePage的历史记录并将其加载回。因此,我想将A页的历史记录存储在某种结构中,并将其设置为B页 在文档中,我找到了以下方法: // Saves the web engine history history into stream. QDataStream &operator<<(QDataStream &stream, const QWebEngineHistory &history) // Loads the web engin

我需要保存
QWebEnginePage
的历史记录并将其加载回。因此,我想将A页的历史记录存储在某种结构中,并将其设置为B页

在文档中,我找到了以下方法:

// Saves the web engine history history into stream.
QDataStream &operator<<(QDataStream &stream, const QWebEngineHistory &history)

// Loads the web engine history from stream into history.
QDataStream &operator>>(QDataStream &stream, QWebEngineHistory &history)
我知道
QWebEnginePage
QWebEngineHistory
是const,但我想知道为什么上面甚至有这两种方法?为什么会有一个函数“将web引擎历史加载到历史中”

我能想到的唯一替代方法是将我的历史记录存储在
QList
中,但管理它并不好,可能会导致更多问题(因为整个前进/后退按钮等)


非常感谢你的帮助

无法保存任何对象,保存的是与该对象关联的信息,因此不应创建QWebEngineHistory,而应保存和/或加载该信息

在下面的示例中,当应用程序关闭并加载启动时,信息保存在文件中

#包括
int main(int argc,char*argv[]){
QCoreApplication::setAttribute(Qt::AA_enableHighdDiscaling);
QApplication应用程序(argc、argv);
const QString filename=“history.bin”;
QWebEngineView视图;
查看。加载(QUrl(“https://stackoverflow.com"));
{//装载
QFile文件(文件名);
if(file.open(QFile::ReadOnly)){
qDebug()>*(view.page()->history());
}
}  
视图。调整大小(640480);
view.show();
int-ret=app.exec();
{//save
QFile文件(文件名);
if(file.open(QFile::WriteOnly)){
qDebug()>*(view.page()->history());
}  
视图。调整大小(640480);
view.show();
int-ret=app.exec();
{//save
QSettings设置;
QByteArray ba;
QDataStream ds(&ba,QIODevice::WriteOnly);
ds历史();
设置值(“页面/历史”,ba);
} 
返回ret;
}

首先非常感谢您提供的详细信息!我发布评论太早,无法再编辑它…再次:非常感谢您提供的详细信息!它确实解决了我的问题,帮助我理解了很多:)我一直在寻找它不起作用的原因,直到我发现我放弃了取消ds历史记录()的引用;…再次感谢!
QWebEnginePage *m_history;
...
...
void setHistory(QWebEngineHistory *history){
   QDataStream data;
   data << history; //Hoping that the content of data is persistent after deleting of the QWebEnginePage where the history is coming from
   data >> m_history;
}
m_history >> m_webEnginePage.history(); // Pseudo-Code