Question

J'utilise un QWebView pour afficher un contenu et je veux utiliser CSS personnalisé pour embellir la sortie. Je trouve que je peux utiliser la méthode QWebSettings.setUserStyleSheetUrl() pour charger mon propre CSS dans la vue. Le fichier .css est dans le même répertoire que mon programme principal.

self.webview = QWebView(MainWindow)
self.webview.settings().setUserStyleSheetUrl(QUrl.fromLocalFile("myCustom.css"))

Cependant, les stylings personnalisés ne se chargent pas quand j'ajouter le contenu à la page en utilisant setHtml(). Je l'ai testé que le CSS applique correctement au code HTML dans un navigateur standard.

Toute idée de ce que je fais mal?

Était-ce utile?

La solution

Dans Qt, doivent tous les chemins vers des fichiers externes comme ABSOLU chemins, pas ceux relatifs.

Pour résoudre le problème, j'ajouter pour faire le changement suivant:

path = os.getcwd()
self.webview.settings().setUserStyleSheetUrl(QUrl.fromLocalFile(path + "/myCustom.css"))

Et tout a fonctionné correctement. Espérons que cela aidera quelqu'un à l'avenir et de les enregistrer quelques heures de débogage.

Autres conseils

  

Dans Qt, tous les chemins vers des fichiers externes   doivent être des chemins ABSOLU, non   ceux relatifs.

Ce n'est pas vrai. Le code ci-dessous fonctionne pour moi.

#include <QtCore>
#include <QtGui>
#include <QtWebKit>

int main(int argc, char ** argv)
{
    QApplication app(argc, argv);

    QMainWindow mainWindow;

    QWebView* webView = new QWebView(&mainWindow);
    webView->settings()->setUserStyleSheetUrl(QUrl::fromLocalFile("google.css"));

    QFile source("google.html");
    source.open(QIODevice::ReadOnly);
    webView->page()->mainFrame()->setHtml(QString::fromUtf8(source.readAll().constData()));

    mainWindow.setCentralWidget(webView);
    mainWindow.show();

    return app.exec();
}
  

Le fichier Css est dans le même répertoire   comme mon programme principal.

Les chemins relatifs sont interprétés par rapport au répertoire de travail courant qui ne constitue pas le même que le répertoire exécutable.

Je viens de croiser, alors je vais poster mon extrait de test ici; l'extrait génère son propre fichier .html et .css dans le même répertoire que le script python; et le script a été appelé dans le même répertoire pour les tests.

Au moins dans python / PyQt4, il semble que - en effet - il est uniquement chemins absolus qui travaillent avec setHtml.

Le code de test peut soit:

compare_qtwebkit-test.py

La méthode setHtml semble montrer que du texte de style avec la spécification c3, où file:// + chemin absolu est utilisé. ( EDIT: je voulais juste noter que la suggestion dans ce poste , pour "essayer

scroll top