Seite 1 von 1
QtWebkit und Favicons
Verfasst: 13. März 2009 22:14
von progger1986
Ich arbeite im Moment an einem Mikrobrowser, der auch Favicons anzeigen soll.
Die Favicons versuceh ich im Moment so anzuzeigen:
Code: Alles auswählen
QIcon icon = web->icon();
if (icon.isNull()) {
setWindowIcon(QIcon("icons/logo.png"));
showAction->setIcon(QIcon("icons/logo.png"));
} else {
setWindowIcon(icon);
showAction->setIcon(icon);
}
Doch das Funktioniert irgendwie nicht. Weiss jemand woran das liegen könnte?
Verfasst: 13. März 2009 22:33
von CLRS530
0 Infos sind ein paar zu wenige. Wie um alles in der Welt, sollen wir daran irgend einen Fehler entdecken.
Also erst einmal. Es wird in den isNull Zweig gegangen, anstatt in das else, richtig?
Was dann aus web (was ist web) rauskommt und was mit icon in showAction (was ist showAction) gemacht wird können wir doch allerhöchstens erahnen.
Verfasst: 13. März 2009 22:46
von franzf
web ist ein Pointer auf ein QWebView.
showAction ist eine QAction.
Wahrscheinlich hast du das logo in deinen Resourcen liegen?
Dann fehlt der ":" am Anfang des Pfads.
Ansonsten braucht man echt mehr Infos. Insbesondere was nicht geht

Verfasst: 13. März 2009 23:12
von progger1986
Sorry für die wenigen Infos:
web ist ein pointer auf ein QWebView
showAction ist ein QAction in einer Toolbar
Und es wird in den else Zweig gesprungen.
Was nicht geht: Das Fenster-Icon bzw QAction-Icon wird nicht zum Favicon der Website geändert. Es wird nur auf einen Blauen Globus geändert, der nicht von mir stammt.
Verfasst: 13. März 2009 23:28
von franzf
In der Doku steht, dass du per default nen NULL-Icon kriegst, und man solle sich an das iconChanged()-SIGNAL connecten.
Der blaue Globus ist wohl das Default-Icon, wenn kein Icon von der website gesetzt wurde (nehme ich an, ist jedenfalls in arora so).
Bist du dir auch sicher, dass die Seiten, die du aufrufst, ein favicon setzen?
Verfasst: 14. März 2009 09:54
von progger1986
Ich bin mir ziemlich sicher, dass meine Textseiten ein Favicon haben. (Andere Browser inkl. Arora zeigen es ja auch an).
Die Sache mit dem iconChanged Signal ist, die dass es komischerweise nie emmitted wird.
Zur Info: Ich habe ein Fenster, dass ein QWebView enthält, mit dem ich arbeite.
Verfasst: 14. März 2009 11:37
von franzf
Weil mich das auch interessiert hat, hab ich bissl experimentiert, und ne Lösung gefunden.
Ist eigentlich ganz easy

Musst nur ein existierendes Verzeichnis als iconDatabasePath angeben.
Code: Alles auswählen
QWebSettings::setIconDatabasePath("/tmp/testBrowserCache/");
Dann kommt auch ein iconChanged() Signal an. Nur ist nach dem ersten Aufruf einer webseite scheinbar das icon noch nicht im Cache, während das Signal emittiert wird. Wenn du die Seite aber neu lädst, hast du dein schönes Favicon
Grüße
Franz
Verfasst: 14. März 2009 12:48
von progger1986
Danke, das wars wohl.

Ist halt nur irgendwie unschn so, aber es geht.