Seite 1 von 1

[gelöst] QAssistant unter Windows

Verfasst: 27. August 2007 10:12
von C_R
Hi!

Ich benutze den QAssistant für eine User-Hilfe in meinem Programm. Unter Linux kompiliert das ganze auch (nach Kopieren der Exec). Unter Windows habe ich die assistant.exe ins Programmverzeichnis kopiert, der Makefile CONFIG += assistant hinzugefügt und bekomme in minGW den Fehler

"cannot find -lQtAssistantClientd"

Was habe ich falsch gemacht/ vergessen?

Danke für die etwaige Hilfe!

Verfasst: 27. August 2007 10:16
von Christian81
Die Debug-Libs wurden nicht gebaut. Zumindest nicht für QtAssistant. Ist aber ein 'Standard-Problem' unter win32 -> Foren Suche!

Verfasst: 31. August 2007 12:38
von C_R
Nunja, ich hatte meine makefile so abgeändert, dass er den release ausspuckt. Beim Kompilieren gibt es auch keinerlei Fehler. Will ich nun den assistant über mein Programm aufrufen, passiert allerdings gar nichts.
Kennt jemand evtl. das Problem oder hat einen Tip?

Die Forensuche hat mir nicht wirklich weitergeholfen.

Verfasst: 10. September 2007 16:10
von C_R
Kann mir niemand noch ein Tip geben? Ich bekomm es einfach nicht hin. :x

Verfasst: 10. September 2007 16:15
von Christian81
Schonmal versucht das Problem zu debuggen?
Ggf. ein kleines Testprogramm für uns?

Verfasst: 10. September 2007 17:03
von C_R
Ich weiss nicht, wie ich das debuggen könnte - unter Linux funktioniert es ja einwandfrei, daher nehme ich an, alles ist richtig verbunden. Ich rufe ihn über einen Menü-Leisten-Eintrag auf, wie auch verschiedene Dialoge (die funktionieren). Also gebe ich dir ersteinmal den Code des erstellens - evtl. hapert es ja schon dort..



Code: Alles auswählen

MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent)
{
	setWindowIcon(QIcon(":/res/icons/appicon.png")); // :/ Data saved as Qt Resource in icons.qrc file (rcc)
	setWindowTitle("GPS Satellite Prediction Tool");
 	setObjectName("mainWin"); // used to find the main window from everywhere within qt-objects (QT-Widget list)
	createMenuBar();
	createToolBar();
	createStatusBar();
	createCentralWidget();
	showMaximized();
	
	// built-in help center / online help /  onlinehilfe
	helpCenter = new QAssistantClient(QDir::currentPath() + QDir::convertSeparators("/") + QString("documentation"), this);
	QStringList assistantArgs;
	assistantArgs << "-profile" << "documentation/satPred.adp";
	helpCenter->setArguments(assistantArgs);
}
und bei Betätigen des entsprechenden Buttons wird das aufgerufen:

Code: Alles auswählen

void MainWindow::help()
{ // open the integrated help center
	helpCenter->openAssistant();
}
Ok.. ich debugge morgen, ob er help() aufruft..falls du/ihr nichts siehst/seht auf anhieb, melde ich mich morgen (habe nun Feierabend und muss den Bus erwischen :) ), ob ggf. ein Dialog dort aufgerufen werden kann.

Verfasst: 11. September 2007 09:33
von C_R
Habe nun help() um
QMessageBox::warning(this,"","");
erweitert. Die Box wird auch aufgerufen, wie ich erwartet habe..

Verfasst: 11. September 2007 09:38
von Christian81
Und die Debugausgabe sagt dir nichts (wie z.B. assistant.exe not found oder sowas in der Art)? Kannst Du mal in den funktionsaufruf openAssistant() reinsteppen und schauen was da passiert?

Verfasst: 11. September 2007 09:44
von C_R
Also ich habs "gefixt", sag ich mal..

helpCenter = new QAssistantClient(QDir::currentPath() + QDir::convertSeparators("/") + QString("documentation"), this);

habe ich mit

helpCenter = new QAssistantClient(QDir::currentPath(), this);

erstezt. Obwohl die assistant.exe in currentPath()/documentation auch liegt, konnt er die dort scheinbar nicht aufrufen. Aus dem Applikationsordner funkioniert es. oO Ist das eventuell eine Restriktion?

Verfasst: 11. September 2007 10:04
von Christian81
Ich würde sagen dass QDir::convertSeparators("/") ihm ggf. nicht gefällt - Qt-intern ist es immer '/' und nie '\\'. Ansonsten habe ich keine Idee

Verfasst: 13. September 2007 09:32
von C_R
äh naja, habs nun endlich herausgefunden:

Da das Programm ja cross-plattform-tauglich sein soll, hatte ich sowohl die Linux

assistant

und die Windows

assistant.exe

In einem Ordner und Windows scheint das überhaupt nicht zu mögen. Löscht man die assistant (linux) bei der Windows-Version, klappts 1a.

Hat also nix mit den obigen Dingen (Ordner) zu tun..