[Solved] Advice needed: Reload page on "F5"
[ 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!
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.
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.
this->action_refresh = new QAction(this->view);
Better would be to use
This way you get the key sequence the user expects on his platform.
Topic subject is : Reload page on “F5” ;)
But I think QKeySequence::Refresh & Qt::Key_F5 are synonyms, at least for X11 & WIN platforms. isn't they?
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?
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);
//[ ... 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);
QObject::connect(actionReload, SIGNAL(triggered()), &window, SLOT(reload()));
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]
you have forget to add action to WebView:
[quote author="AcerExtensa" date="1335439172"]you have forget to add action to WebView:
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.)
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.