qthelp modul: custom help viewer

Alles rund um die Programmierung mit Qt
Antworten
samsamsam
Beiträge: 43
Registriert: 9. Juni 2009 16:22
Wohnort: Dortmund

qthelp modul: custom help viewer

Beitrag 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.?
androphinx
Beiträge: 170
Registriert: 26. Januar 2009 09:19
Wohnort: 127.0.0.2

Beitrag 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
samsamsam
Beiträge: 43
Registriert: 9. Juni 2009 16:22
Wohnort: Dortmund

Beitrag 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.
samsamsam
Beiträge: 43
Registriert: 9. Juni 2009 16:22
Wohnort: Dortmund

Beitrag 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.
LordBernhard
Beiträge: 15
Registriert: 3. Februar 2008 15:40

Beitrag 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:
androphinx
Beiträge: 170
Registriert: 26. Januar 2009 09:19
Wohnort: 127.0.0.2

Beitrag 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
Antworten