We have tried a bunch more ideas and none seem to work. We have tried the 
following:
m_WebView->page()->triggerAction(QWebEnginePage::Back);
m_WebView->page()->history()->goToItem( 
m_WebView->page()->history()->itemAt(1));
m_WebView->page()->triggerAction(QWebEnginePage::Back);


None of these work. The documentation for QWebEngineView _says_ it should work. 
Does anyone have any ideas?

Thanks
Mike Jackson

> On Dec 16, 2015, at 3:13 PM, Mike Jackson <imikejack...@gmail.com> wrote:
> 
> I have an small app that uses QWebEngineView to display web pages. We have 
> tried hooking up a pair of QPushButtons to invoke the forward and back in the 
> QWebEngineHistory but neither seem to work. The QActions are getting 
> triggered and our code is correctly calling them but the QWebEngineView does 
> not actually load the previous page from its history. We have printed out the 
> history each time the button is clicked and the history is correctly 
> navigated. I am sure we have missed something simple that needs to be 
> performed. Maybe some sort of setup of the QWebEngineView or something? I am 
> pasting in our simple application hoping that someone can spot the error.
> Thanks
> Mike Jackson
> 
> ———main.cpp—————
> #include <QApplication>
> #include "WebTest_UI.h"
> int main(int argc, char* argv[])
> {
> 
>  QApplication app(argc, argv);
> 
>  QCoreApplication::setOrganizationDomain("Foo");
>  QCoreApplication::setOrganizationName("Bar");
>  QCoreApplication::setApplicationName("WebTest_UI");
> 
> #if defined (Q_OS_MAC)
>  app.setQuitOnLastWindowClosed( true );
> #endif
> 
>  QCoreApplication::setAttribute(Qt::AA_UseHighDpiPixmaps);
> 
>  WebTest_UI* helper = WebTest_UI::Instance();
>  helper->show();
> 
>  return app.exec();
> }
> 
> ——WebTest_UI.h—————
> #ifndef _WebTest_UI_H_
> #define _WebTest_UI_H_
> #include <QtWidgets/QWidget>
> #include <QtWidgets/QPushButton>
> #include <QtWebEngineWidgets/QWebEngineView>
> class  WebTest_UI : public QWidget
> {
>    Q_OBJECT
>  public:
>    virtual ~WebTest_UI();
>    static WebTest_UI* Instance();
>  protected:
>    WebTest_UI();
>  protected slots:
>    void goBack(bool b);
>  private:
>    static WebTest_UI* self;
>    QWebEngineView* m_WebView;
>    QPushButton* forwardBtn;
>    QPushButton* backBtn;
>    WebTest_UI(const WebTest_UI&); // Copy Constructor Not Implemented
>    void operator=(const WebTest_UI&); // Operator '=' Not Implemented
> };
> #endif /* _WebTest_UI_H */
> 
> ——WebTest_UI.cpp—————
> #include "WebTest_UI.h"
> #include <QtCore/QFileInfo>
> #include <QtCore/QDir>
> #include <QtWidgets/QGridLayout>
> #include <QtWidgets/QMessageBox>
> #include <QtWidgets/QAction>
> #include <QtWebEngineWidgets/QWebEngineHistory>
> // Include the MOC generated CPP file which has all the QMetaObject 
> methods/data
> #include "moc_WebTest_UI.cpp"
> 
> WebTest_UI* WebTest_UI::self = NULL;
> // 
> -----------------------------------------------------------------------------
> WebTest_UI::WebTest_UI()
> {
>  Q_ASSERT_X(!self, "WebTest_UI", "There should be only one WebTest_UI 
> object");
> 
>  WebTest_UI::self = this;
> 
>  // Create the web view
>  m_WebView = new QWebEngineView(NULL);
>  m_WebView->setObjectName(QStringLiteral("m_WebView"));
>  QSizePolicy sizePolicy1(QSizePolicy::Expanding, QSizePolicy::Expanding);
>  sizePolicy1.setHorizontalStretch(0);
>  sizePolicy1.setVerticalStretch(0);
>  sizePolicy1.setHeightForWidth(m_WebView->sizePolicy().hasHeightForWidth());
>  m_WebView->setSizePolicy(sizePolicy1);
>  m_WebView->setUrl(QUrl(QStringLiteral("about:blank")));
>  QGridLayout* gridLayout = new QGridLayout(this);
>  gridLayout->addWidget(m_WebView, 2, 0, 1, 2);
>  m_WebView->load(QUrl("http://download.qt.io";));
>  m_WebView->show();
> 
>  backBtn = new QPushButton("Back");
>  gridLayout->addWidget(backBtn, 1, 0, 1, 1);
>  connect(backBtn, SIGNAL(clicked(bool)),
>          this, SLOT(goBack(bool)));
> 
>  forwardBtn = new QPushButton("Forward");
>  gridLayout->addWidget(forwardBtn, 1,1,1,1);
> 
>  self->setWindowFlags(this->windowFlags() & ~Qt::WindowContextHelpButtonHint);
> 
> #if defined (Q_OS_MAC)
>  QAction* closeAction = new QAction(this);
>  closeAction->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_W));
>  connect(closeAction, SIGNAL(triggered()), this, SLOT(close()));
>  addAction(closeAction);
> #endif
> }
> // 
> -----------------------------------------------------------------------------
> WebTest_UI::~WebTest_UI() {}
> // 
> -----------------------------------------------------------------------------
> WebTest_UI* WebTest_UI::Instance()
> {
>  if (self == NULL)
>  {
>    self = new WebTest_UI();
>  }
>  return self;
> }
> // 
> -----------------------------------------------------------------------------
> void WebTest_UI::goBack(bool b)
> {
>  QList<QWebEngineHistoryItem> backHistory = 
> m_WebView->history()->backItems(10000);
>  QList<QWebEngineHistoryItem> forwardHistory = 
> m_WebView->history()->forwardItems(10000);
>  qDebug() << "Before:" << backHistory.size() << " " << forwardHistory.size();
>  m_WebView->back();
>  backHistory = m_WebView->history()->backItems(10000);
>  forwardHistory = m_WebView->history()->forwardItems(10000);
>  qDebug() << "Current History Index:" << 
> m_WebView->history()->currentItemIndex();
>  qDebug() << "After:" << backHistory.size() << " " << forwardHistory.size();
> }
> 
> 

_______________________________________________
Interest mailing list
Interest@qt-project.org
http://lists.qt-project.org/mailman/listinfo/interest

Reply via email to