4

Qt リソース システムを使用して、ローカルの html ファイルをどのように表示しますか? 明らかなQtCore.QUrl.fromLocalFile(":/local_file.html")ことは、正しい構文ではないようです。

ファイル mainwindow.qrc (コンパイル前)

<qresource prefix="/">
    <file alias="html_home">webbrowser_html/program_index.html</file>

ファイル ui_mainwindow:

class Ui_MainWindow(object):    
    def setupUi(self, MainWindow):
        #...
        self.WebBrowser = QtWebKit.QWebView(self.Frame3)

ファイル webbrower.py

from ui_mainwindow import Ui_MainWindow
import mainwindow_rc

class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
    def __init__(self):
        QtGui.QMainWindow.__init__(self)

        self.setupUi(self)
        #...
        stream = QtCore.QFile(':/webbrowser_html/program_index.html')
        if stream.open(QtCore.QFile.ReadOnly):
            home_html = QtCore.QString.fromUtf8(stream.readAll())
            self.WebBrowser.setHtml()
            stream.close()
4

2 に答える 2

7

QUrlにはスキームが必要で、リソースの場合はqrc://です。ドキュメントの関連部分:

デフォルトでは、アプリケーション内のリソースは、ソース ツリーにあるのと同じファイル名、:/プレフィックス付き、またはqrcスキーム付きの URL でアクセスできます。

たとえば、ファイル パス:/images/cut.pngまたは URL qrc:///images/cut.pngは、cut.png ファイルへのアクセスを提供します。このファイルのアプリケーションのソース ツリー内の場所は ですimages/cut.png

したがって、代わりにこれを使用します。

QtCore.QUrl("qrc:///local_file.html")

編集

ファイルにalias( alias="html_home") を付けています:

<qresource prefix="/">
    <file alias="html_home">webbrowser_html/program_index.html</file>

パスは今:/html_homeではなく:/webbrowser_html/program_index.html

以下を使用する必要があります。

QtCore.QUrl("qrc:///html_home")

あなたの場合はどれですか:

class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
    def __init__(self):
        QtGui.QMainWindow.__init__(self)

        self.setupUi(self)
        #...
        self.WebBrowser.load(QtCore.QUrl('qrc:///html_home'))

(エクモロのソリューションを使用する場合は、それも調整する必要があります。また、ペーストでページの HTML を設定していないことに注意してください。)

于 2012-09-11T21:10:01.933 に答える
0

ローカル リソース ファイルは、次のコマンドで開くことができますQFile

stream = QFile(':/local_file.html')
if stream.open(QFile.ReadOnly):
    self.browser.setHtml(QString.fromUtf8(stream.readAll()))
    stream.close()
于 2012-09-11T20:52:25.070 に答える