Seite 1 von 1

qthelp modul: custom help viewer

Verfasst: 9. September 2010 15:01
von samsamsam
hallo allerseits,

um einen "custom help viewer" bzw. Huilfe für ein Programm zu implementieren, bietet Qt 2. Mögl. an: einmal der Remote-Aufruf mit dem Assistant oder über die QHelpEngine.

Meine Frage ist: Wenn ich mit QHelpEngine arbeite, wie komm ich an die Html-Files ran, die in das .qch-file verpackt wurden...?

siehe http://doc.qt.nokia.com/4.6/qthelp-framework.html

Code: Alles auswählen


QList<QUrl> files =
		m_helpEngine->files("com.product.companyname.manual",QStringList());

int index = 0;
	foreach(QUrl url, files)
	{
		if(url.toString().contains("diehtmldateidieichsuche.html"))
			index = files.indexOf(url);
		
	}

QTextBrowser *browser = new QTextBrowser(m_rightWidget);
	m_rightWidget->addTab(browser,"diehtmldateidieichsuche");
	
	browser->setSource(files.at(index));

files.at(index) liefert den wert "qthelp://com.product.companyname.manual/doc/diehtmldateidieichsuche.html", der aber für den textbrowser nicht brauchbar ist.

hier im forum habe ich eine weniger gute lösung gefunden, dass man den abs. pfad zu der datei angibt. ich benutze aber ausschliesslich nur das, was in die .qch-file verpackt wurde und habe keine nichtverpackten dateien. ausserdem ist die .qch-file eine art sqlite-db.

wie kann ich mittels QHelpEngine an das html-file kommen, das in dem .qch-file verpackt liegt, um es im textbrowser darzustellen, samt allen images etc.?

Verfasst: 9. September 2010 21:46
von androphinx
Hab es mir jetzt nicht genauer angeschaut, aber der letzte Absatz sollte doch dein Interesse erwecken sollen:

http://doc.qt.nokia.com/4.6/qthelp-fram ... engine-api

Mfg androphinx

Verfasst: 10. September 2010 12:16
von samsamsam
das beispiel kenn ich. das problem ist, dass ich zwar damit über qtextdocument die html-datei darstellen kann, aber nicht ihre ressourcen, i.e.

Code: Alles auswählen

<img src="optionsdialog/allg_opt.png" width="436" height="367" border="1" name="Allgemeine Optionen"  alt="Allgemeine Optionen">
die ganzen ressourcen werden nicht mitgeladen bzw. nicht dargestellt. beim erstellen der .qhc-datei und der .qch-datei (mit

Code: Alles auswählen

qcollectiongenerator mycollection.qhcp -o mycollection.qhc
) müssen in der html die richtigen, konkreten relativen imagepfade zu der html-datei stehen. da aber alles in der .qch-datei verpackt ist, existiert der pfad src="optionsdialog/allg_opt.png" nicht.

ich habe jetzt eine schummellösung, indem ich in dem anwendungsordner des programms alles, was sich in der .qch-datei komprimier befindet in einen ordner "html" entpacke und dann die absoluten pfade zu den einzelnen html-dateien benutze. verwirft zwar die ganzen vorteile von der db aber ist besser als jedes mal die html-datei nach "src" zu parsen und dann alle ressourcen und die html-datei irgendwo abzuspeichern um dann darzustellen.

Verfasst: 10. September 2010 12:18
von samsamsam
ich frage mich, wie es der qt-assistent intern macht. er braucht ja auch nur die beiden files und sonst nichts. und auch er speichert nichts zwischen. hab in den code reingeguckt, bin aber daraus nicht wirklich schlau geworden.

Verfasst: 11. September 2010 11:30
von LordBernhard
das ist ne sehr gute frage... Ich verwende bei einem meiner Projeke auch die QHelpEngine und habe das selbe Problem, dass Bilder nicht geladen werden :cry:

Verfasst: 12. September 2010 17:35
von androphinx
Ich kann leider aus Zeitgründen nicht weiterhelfen, aber ich würde mir einfach mal den Code vom Assistant angucken, bzw. dann von den Docs:

Assistant: http://qt.gitorious.org/qt/qt/trees/4.7 ... /assistant

Docs:
http://qt.gitorious.org/qt/qt/trees/4.7/doc/src

Mfg androphinx