Qt网络引擎获取历史
Qt web engine get history
我正在读一本Qt书,可能不太好,这给我带来了一些麻烦。我需要从QWebEngineView* webview;
中获取历史记录。我在书中写了以下代码:
QWebEngineHistory* h = QWebEnginePage::history();
这就是我应该检索历史记录的方式,然后我可以使用h->items();
访问它。问题是上面的代码产生
调用没有对象参数的非静态成员函数
如何修复此问题?我需要获得导航页面的历史记录
我试过这个
QWebEngineHistory* h = webview->history();
但现在我无法呼叫h->items()
。我该怎么解决这个问题?我需要访问items()
。
头文件
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QWebEngineView>
#include <QWebEnginePage>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow {
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = nullptr);
~MainWindow() override;
virtual void paintEvent(QPaintEvent* event) override;
private slots:
void on_pushButton_2_clicked();
void on_pushButton_3_clicked();
void on_pushButton_clicked();
void on_pushButton_4_clicked();
void on_url_input_returnPressed();
void on_pushButton_5_clicked();
void on_pushButton_7_clicked();
void on_pushButton_6_clicked();
private:
Ui::MainWindow *ui;
QWebEngineView* webview;
void loadPage() const;
};
#endif // MAINWINDOW_H
实施
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow) {
ui->setupUi(this);
webview = new QWebEngineView(ui->webViewFrame);
loadPage();
}
MainWindow::~MainWindow() {
delete ui;
}
void MainWindow::on_pushButton_2_clicked() {
webview->back();
}
void MainWindow::on_pushButton_3_clicked() {
webview->forward();
}
void MainWindow::on_pushButton_clicked() {
webview->reload();
}
void MainWindow::on_pushButton_4_clicked() {
loadPage();
}
void MainWindow::loadPage() const {
QString url = ui->url_input->text();
if (url.length() == 0)
url = "http://www.google.it";
if (!url.startsWith("http://") && !url.startsWith("https://"))
url = "http://" + url;
ui->url_input->setText(url);
ui->listWidget->addItem(url);
webview->load(QUrl(url));
}
void MainWindow::on_url_input_returnPressed() {
loadPage();
}
void MainWindow::paintEvent(QPaintEvent* event) {
QMainWindow::paintEvent(event);
webview->resize(ui->webViewFrame->size());
}
void MainWindow::on_pushButton_5_clicked() {
QWebEngineHistory* h = webview->history();
auto x = h->items(); //error here!!
ui->stackedWidget->setCurrentIndex(0);
}
void MainWindow::on_pushButton_7_clicked() {
ui->stackedWidget->setCurrentIndex(1);
}
void MainWindow::on_pushButton_6_clicked() {
ui->listWidget->clear();
}
我不是Qt的大专家。但我认为你的书在这种情况下有一个错误。第二次接近
QWebEngineHistory* h = webview->history();
完全正确。因为您希望从web引擎(对象webview
(中检索历史记录。
从Qt文档来看,history()
是一个非静态函数。(这就是为什么您的第一个代码会产生指定的错误。(如果history()
是一个静态函数,它应该返回什么历史记录?它与web视图没有任何连接。
编辑(scopechanov请求(:在qwebenginepage.h中,QWebEngineHistory
仅向前声明,因此您需要#include <QWebEngineHistory>
才能访问items()
(或任何其他方法(。
相关文章:
- C++为构建时间获取QDateTime的可靠方法
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 如何使用 < 和 > 命令获取 c++ 中的输入和输出?
- 使用指针从C++中的数组中获取最大值
- 如何获取std::result_of函数的返回类型
- 如何在openssl-ecc中获取十六进制格式的私钥
- 使用Unreal C++获取VR耳机的世界位置/方向
- 获取日期异步信号安全吗?如果在信号处理程序中使用,它会导致死锁吗
- 从C字符串中获取奇怪的字符串长度
- 为什么我的for循环不能正确获取argv
- 从python中调用C++函数并获取返回值
- 如何获取一个数字的前3位
- 获取字符串的长度并将其分配给数组
- 无法获取菜单选择以运行函数.C++
- 数组长度,为什么从命令行获取时不能使用它?
- Boost Spirit,获取迭代器内部语义动作
- 尝试通过OCI例程从Oracle获取blob数据,但出现错误:ORA-01008:并非所有变量都绑定
- Qt网络引擎获取历史
- Windows Phone 8.1运行时-如何获取呼叫信息,如传入和传出呼叫的历史记录
- 如何使用c++获取IE历史记录