To, o co prosisz, nie jest możliwe w sposób, w jaki to sobie wyobrażasz. openUrl() używa systemu operacyjnego do określenia programu, aby otworzyć argument, jak wspomniano w jego dokumentacji.
Może być kilka obejść, ale żadna z nich nie działa dobrze lub nie działa we wszystkich przeglądarkach. Po prostu ten rodzaj drobnoziarnistej kontroli prawdopodobnie nie będzie dla ciebie możliwy.
Jeśli chcesz sterować zakładką w przeglądarce, możesz znaleźć okno reprezentowane przez tę kartę i zamknąć ją tuż przed otwarciem nowej. To rozwiązanie jest trochę hacky.
Kolejnym hackim rozwiązaniem jest znalezienie HWND w polu edycyjnym z adresem URL i próba zmiany jego tekstu za pomocą SendMessage()
. Nie będzie to jednak działać w Chrome, ponieważ nie ma osobnego kontrolera w oknie adresu URL. Może działać na Firefox lub IE.
Lepszym rozwiązaniem jest utworzenie własnej przeglądarki internetowej, którą kontrolujesz za pomocą Qt WebKit. Łatwo jest renderować stronę i zmieniać wyświetlany URL. QWebView jest łatwą w użyciu implementacją QtWebKit.
Hi Elwood, czy kiedykolwiek znaleźć rozwiązanie tego? Mam dokładnie ten sam problem: http://stackoverflow.com/questions/15116760/open-a-web-page-from-a-desktop-app-repeatedly-in-same-window – sipi
Sipickles: Sorry, no. Wygląda na to, że nie jest to możliwe. Myślałem o stworzeniu lokalnego pliku HTML z '' w nim, a następnie nadpisanie tego pliku na żądanie. Ale jeszcze tego nie próbowałem, a to podejście prawdopodobnie ma pewne wady. – Elwood
Szukam tej samej rzeczy (otwórz w tej samej karcie), ale najlepiej w Qt5. Ale wziąłbym również rozwiązanie Qt4. – amenthes