Qt Forum

    • Login
    • Search
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Search
    • Unsolved

    [Solved] Advice needed: Reload page on "F5"

    Qt WebKit
    5
    12
    6233
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • E
      eikeR last edited by

      [ It should be easy to solve, but I found no good starting point. ]

      A reload in my application (i.e. a QWebView that loads a html page) already works because I can right-click on a page and select 'Reload'. This seems to be enabled by default, I did not have to do anything to enable this.

      What do I have to do, to achieve a reload by just pressing F5 as we know it from standard browsers? A hint to lead me into the right direction should be enough.

      Thanks in advance!

      1 Reply Last reply Reply Quote 0
      • M
        miroslav last edited by

        If you are reimplementing the web view, you can handle keyPressEvents, and catch F5. If not, you could use an event filter.

        Mirko Boehm | mirko@kde.org | KDE e.V.
        FSFE Fellow
        Qt Certified Specialist

        1 Reply Last reply Reply Quote 0
        • G
          goetz last edited by

          I would try to add a [[doc:QAction]] together with a shortcut to the webview. You don't need to subclass for this approach, just set the webview as the parent of the action.

          http://www.catb.org/~esr/faqs/smart-questions.html

          1 Reply Last reply Reply Quote 0
          • A
            AcerExtensa last edited by

            @QKeySequence keys_refresh(Qt::Key_F5);
            this->action_refresh = new QAction(this->view);
            this->action_refresh->setShortcut(keys_refresh);
            connect(this->action_refresh, SIGNAL(triggered()),this->view,SLOT(reload()));
            @

            God is Real unless explicitly declared as Integer.

            1 Reply Last reply Reply Quote 0
            • G
              goetz last edited by

              Better would be to use

              @
              QKeySequence keys_refresh(QKeySequence::Refresh);
              @

              This way you get the key sequence the user expects on his platform.

              http://www.catb.org/~esr/faqs/smart-questions.html

              1 Reply Last reply Reply Quote 0
              • A
                AcerExtensa last edited by

                Topic subject is : Reload page on “F5” ;)

                God is Real unless explicitly declared as Integer.

                1 Reply Last reply Reply Quote 0
                • A
                  AcerExtensa last edited by

                  But I think QKeySequence::Refresh & Qt::Key_F5 are synonyms, at least for X11 & WIN platforms. isn't they?

                  God is Real unless explicitly declared as Integer.

                  1 Reply Last reply Reply Quote 0
                  • G
                    goetz last edited by

                    Yes, they are. And if you're only on platforms that use F5, it makes no difference for you. But why use something hardcoded, when there's a general solution.

                    And if someone is not aware of the standard key sequences, how should that be reflected in the topic title?

                    http://www.catb.org/~esr/faqs/smart-questions.html

                    1 Reply Last reply Reply Quote 0
                    • E
                      eikeR last edited by

                      Thanks so far!
                      Unfortunately it's not working. Can you see what's wrong? For ease of use, I put the code in the main.cpp, which I will not do in the end, but right now it makes it easier to trace my mistake...

                      @
                      //extract from main.cpp:
                      QApplication app(argc, argv);
                      QWebView window;
                      //[ ... some connects on window->page() and window->page()->mainFrame() ...]
                      QKeySequence keys_refresh(QKeySequence::Refresh); //or (Qt::Key_F5), doesn't matter
                      QAction* actionReload = new QAction(&window);
                      actionReload->setShortcut(keys_refresh);
                      QObject::connect(actionReload, SIGNAL(triggered()), &window, SLOT(reload()));

                      window.load(QUrl("file:///C:/start.html"));
                      window.show();
                      app.exec();
                      @

                      If I make right-click -> reload on my html page, the page gets reloaded, but not if I press F5.
                      [Edit: Even if I make s subclass and override the reload() slot, I see that the slot is not called. So either the action is not triggered, or the signal-slot connection is wrong]

                      1 Reply Last reply Reply Quote 0
                      • A
                        AcerExtensa last edited by

                        you have forget to add action to WebView:

                        @window.addAction(actionReload);@

                        God is Real unless explicitly declared as Integer.

                        1 Reply Last reply Reply Quote 0
                        • E
                          eikeR last edited by

                          [quote author="AcerExtensa" date="1335439172"]you have forget to add action to WebView:

                          @window.addAction(actionReload);@[/quote]

                          Great, I was just wondering what kind of black magic binds the action to the window :-) Okay, that's it. Thank you all (also thanks for the first answer, maybe I will also have to use the keyPressEvent() override for some other stuff, but for the reload it's easier to use QActions.)

                          1 Reply Last reply Reply Quote 0
                          • sierdzio
                            sierdzio Moderators last edited by

                            If nothing changed during my lengthy absence from this forum, you should now change the topic's title/ subject to include "[Solved]" at the beginning. I've also tagged it for you.

                            (Z(:^

                            1 Reply Last reply Reply Quote 0
                            • First post
                              Last post