[Interest] QWebEngineView not loading pages from history

Mike Jackson imikejackson at gmail.com
Tue Dec 22 17:54:45 CET 2015


Hmm. Wonder what the bug was? It somehow works in the Example web browser that Qt includes with the 5.5.1 download. if I reinvent the history mechanism I could probably work around the issue. 

Thanks for the update/confirmation

Mike Jackson

> On Dec 22, 2015, at 11:18 AM, Croitor Alexandr <alexandru.croitor at digia.com> wrote:
> 
> Hi.
> 
> I can confirm that it doesn't work in 5.5, but it was fixed for 5.6.
> 
> Regards, Alex.
> 
>> On 22 Dec 2015, at 16:05, Mike Jackson <imikejackson at gmail.com <mailto:imikejackson at gmail.com>> wrote:
>> 
>> Ping? 
>> 
>> Mike Jackson.
>> 
>>> On Dec 18, 2015, at 2:54 PM, Mike Jackson <imikejackson at gmail.com <mailto:imikejackson at gmail.com>> wrote:
>>> 
>>> 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 <imikejackson at gmail.com <mailto:imikejackson at 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 <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 at qt-project.org <mailto:Interest at qt-project.org>
>> http://lists.qt-project.org/mailman/listinfo/interest
> 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/interest/attachments/20151222/443e8341/attachment.html>


More information about the Interest mailing list