externe Anwendung starten, WinXP Qt4.5

Alles rund um die Programmierung mit Qt
Antworten
QuaGS
Beiträge: 5
Registriert: 10. August 2009 19:28

externe Anwendung starten, WinXP Qt4.5

Beitrag von QuaGS »

Moin, moin!

auch wenn ich wie viele Newbies hier Gefahr laufe eine möglicherweise schon gestellte Frage mit einem "strengen" Hinweis auf die Suche-Funktion oder die Doku zu enden:

Ich möchte aus meiner Anwendung per Push-Button ein Dokument in der jeweiligen Standard-Anwendung (hier PDF) öffnen. Den Pfad zum Reader anzugeben halte ich für nicht sehr elegant, da dieser auf den Systemen der Benutzer unterschiedlich lauten kann.
Wie kann ich also den entsprechenden Befehl absetzen um das Dokument mit der Standardanwendung zu öffnen ohne den Pfad mit anzugeben?

Danke im Voraus,
Ernst
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

Das öffnen eines Dokuments mit der Standardanwendung erledigt völlig automatisch
QDesktopServices::openUrl()
für dich.
Der Button schickt dir ein clicked()-SIGNAL, wenn drauf geclickt wurde.
Musst halt in deiner MainWindow-Klasse einen SLOT anlegen, in dem du dann das Dokument öffnest. Wie du das clicked() auf deinen SLOT kriegst steht ausführlich in der DOKU zu QObject::connect und im Kapitel Signal/Slot.

Grüßle
QuaGS
Beiträge: 5
Registriert: 10. August 2009 19:28

Beitrag von QuaGS »

voll einfach ey!

Super, Danke!
RHBaum
Beiträge: 1436
Registriert: 17. Juni 2005 09:58

Beitrag von RHBaum »

QDesktopServices ist mit sicherheit der eleganteste Weg ...
nicht vergessen, dort musst du den pfad zu deinem pdf in einer URL notification uebergeben also "file://c:/myDocuments/myDoc.pdf" z.b.

einige Desktopsysteme , unter anderem windows, unterstuetzen auch auf systemebene das automatische zuordnen.
Also in der console ein c:\myDocuments\myDoc.pdf angeben und dein pdf viewer oeffnet sich gleich mit dem file. Vom eigenen programm aus kannst das auch machen, ala "system("c:\\myDocuments\\myDoc.pdf");
Das wuerde dein eigenen Prozess aber ueberlagern, also dein programm wuerde erst weitergehen, wenn das aufgerufene programm geschlossen wird.
unter c++ gibts dafuer die exec befehle, die machen dir das ding schon in nem neuen prozess auf.

Besser ist dafuer aber QProcess, mit dem geht das genau so und kontrollierter und komfortabler.

Ciao ...
Antworten