PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Browser aus (QT) Anwendung öffnen



Christian81
07-05-2003, 17:07
Ich möchte von meinem Programm aus den Standard Browser öffnen.

Bei SIM-Icq habe ich eine Möglichkeit gefunden --> "exec(getUrlViewer(), url);", aber leider weiss ich nicht, wo dort getUrlViewer() definiert ist, leider kann ich es auch nirgends finden... irgendwo muss es in einer Header-Datei definiert sein.

Gibt es vielleicht unter QT direkt eine Möglichkeit dafür?

tuxipuxi
07-05-2003, 17:16
hi,

ich verstehe deine frage nicht ganz.
moechtest du einen browser aus deiner applikation aufrufen?
das koenntest du z.b. mit QProcess machen:




QProcess browser;
QStringList arguments;

arguments.append( "mozilla" );
arguments.append( url );

browser.setArguments( arguments );

browser.start();



so in der art?

anda_skoa
07-05-2003, 17:21
Ich schätze gerUrlViewer() wird eine Konfigurationseinstellung lesen.

Licq macht das zumindest so.

In einer KDE Applikation kannst du einfach die URL an KRun übergeben.

Ciao,
_

Christian81
07-05-2003, 17:21
Nunja, bei Sim-ICQ gibts z.B. einen Link zu der Homepage. Da drücke ich drauf und es öffnet sich Konqueror. Dabei wird aber nicht explizit Konqueror aufgerufen, sondern nur der Standard-Browser (über die nirgends zu findende getUrlViewer()-Routine). Ich kann ja nicht wissen, welcher Browser der Standard-Browser ist...

Das mit KRun ist eine Idee, aber ich wollte nur QT verwenden :-)

tuxipuxi
07-05-2003, 17:24
ich hoere immer standardbrowser... in linux gibt es definitiv keinen standardbrowser.
viele leute haben kein kde und somit auch keinen konqueror. du musst fuer die leute entscheiden welchen browser sie nehmen sollen oder sie halt fragen. das was ich oben geschrieben hab geht eigentlich fuer jeden browser :)

Christian81
07-05-2003, 17:29
Ok, dann ersetze Standardbrowser eben durch "ein Browser der vorhanden ist ohne mir Gedanken machen zu müssen was es für einer ist" - KRun ist da schon eine Gute Idee ... aber Sim-ICQ geht imho auch unter Gnome und dort wird sich ja auch ein Browser öffnen, ohne dass es irgendwo im Quelltext steht...

anda_skoa
07-05-2003, 17:31
Original geschrieben von Christian81
Das mit KRun ist eine Idee, aber ich wollte nur QT verwenden :-)

Dann wird dich nichts übrigbleiben und eine Konfigurationsoption für den Browser zu machen.

Ciao,
_

anda_skoa
07-05-2003, 17:32
Original geschrieben von Christian81
aber Sim-ICQ geht imho auch unter Gnome und dort wird sich ja auch ein Browser öffnen, ohne dass es irgendwo im Quelltext steht...

getUrlViewer() muss ja irgendwo deklariert und irgendwo definiert sein.

Am besten du wirfst mal grep an :)

Ciao,
_

Christian81
07-05-2003, 17:37
Original geschrieben von anda_skoa
getUrlViewer() muss ja irgendwo deklariert und irgendwo definiert sein.

Am besten du wirfst mal grep an :)

Ciao,
_

Ja, habe schon fast die ganze Festplatte durchsucht... deshalb bin ich ja so verzweifelt. :(
muss mal googlen gehen ...



~/updates/sim> grep -R getUrlViewer *
sim/ui/miscsetup.cpp: edtBrowser->setText(QString::fromLocal8Bit(pMain->getUrlViewer()));
sim/mainwin.orig: exec(getUrlViewer(), url);
sim/mainwin.cpp: exec(getUrlViewer(), url);
~/updates/sim>


in /usr/include kommt auch nichts. Und das blödeste dabei ist - ich kann sim ohne Probleme kompilieren!

anda_skoa
07-05-2003, 17:46
Schau mal, welche Sachen die Datei mainwin.cpp inkludiert.

Vielleicht eine Bibliothek, die SIM benutzt.

Ciao,
_

tuxipuxi
07-05-2003, 17:51
Christian:

ist es denn so schwer eine abfrage zu machen welcher browser benutzt werden soll oder im hintergrund zu pruefen welche browser es gibt?

entweder du verlaesst dich drauf das es den konqueror gibt oder du laesst es.

Christian81
07-05-2003, 18:28
Ich werde jetzt einfach einen Link machen, auf den der User dann draufklickt. Dann wird automatisch ein Browser aufgerufen... aber ich wäre gar nicht auf die Idee gekommen, wenn das nicht in sim drin gewesen wäre und imho auch noch funktioniert :)

Thx für eure Hilfe

Tec
09-05-2003, 12:28
@Christian81

Kannste den Code dazu mal hier posten?

fs111
09-05-2003, 13:20
Ich finde ehrlich gesagt, um mich hier mal einzuklinken, man sollte sowas endlich mal einführen, genauso wie ein Standardemailprogramm. Das können ja einfach Umgebungsvariablen sein, die beim Login gesetzt werden, Bei redhat gab es sowas bei der 8.0 auf jeden Fall mal, zumindest für den Browser. Man hat einfach htmlview aufgerufen, und das startete dann den gewünschten in der Konfigdatei angegebenen Browser. Wo könnte man dennn sowas mal einbringen, damit es mal überall unterstützt wird?

fs111

anda_skoa
09-05-2003, 14:36
Original geschrieben von fs111
Ich finde ehrlich gesagt, um mich hier mal einzuklinken, man sollte sowas endlich mal einführen, genauso wie ein Standardemailprogramm. Das können ja einfach Umgebungsvariablen sein, die beim Login gesetzt werden, Bei redhat gab es sowas bei der 8.0 auf jeden Fall mal, zumindest für den Browser. Man hat einfach htmlview aufgerufen, und das startete dann den gewünschten in der Konfigdatei angegebenen Browser. Wo könnte man dennn sowas mal einbringen, damit es mal überall unterstützt wird?


Dazu gabs einen Thread auf kde-devel
Soweit ich verstanden habe, gibts da einen Vorschlag eine Umgebungsvariable $BROWSER, die einen Konsolenbrowser und zusätzlich, aber nicht zwingend, einen X11 Browser enthält.

Allerdings war dann die Unklarheit, was Preferenz hat, wenn sie gesetzt ist, die DE aber eine eigenes Setting hat.

Wird sich aber eh bald ändern, die freedesktop.org Leute arbeiten AFAIK an einer gemeinsamen MIME Datenbank.

freedesktop.org wäre auch der Ort, wo man sich über sows informieren kann, bzw. sowas vorschlagen und diskutieren kann.

Ciao,
_

Christian81
09-05-2003, 15:38
Original geschrieben von Tec
@Christian81

Kannste den Code dazu mal hier posten?

Ja, aber der bringt dir imho auch nicht viel...

sim-icq/mainwin.cpp 2490-2497:


void MainWindow::goURL(const char *url)
{
#ifdef WIN32
ShellExecuteA(winId(), NULL, url, NULL, NULL, SW_SHOWNORMAL);
#else
exec(getUrlViewer(), url);
#endif
}


CVS ist auch online auf der sim-icq homepage einsehbar.

Christian

anda_skoa
09-05-2003, 16:19
Original geschrieben von Christian81



void MainWindow::goURL(const char *url)
{
#ifdef WIN32
ShellExecuteA(winId(), NULL, url, NULL, NULL, SW_SHOWNORMAL);
#else
exec(getUrlViewer(), url);
#endif
}



man könnte das schön erweitern.



#elif USE_KDE
KRun(url);
#else
exec


Das USE_KDE benutzen sie auch schon in mainwin.h



CVS ist auch online auf der sim-icq homepage einsehbar.


Man sollte denen vielleicht mal sagen, dass man in einem Header kein


using namespace std;

macht :rolleyes:

So, mal sehen, wo das getUrlViewer() ist

Ciao,
_

arthur
09-05-2003, 16:35
Original geschrieben von anda_skoa

Man sollte denen vielleicht mal sagen, dass man in einem Header kein


using namespace std;

macht :rolleyes:

vermutlich ein "schneller" wechsel von 2.xx auf 3.xx :)

gruss
Arthur

Christian81
09-05-2003, 16:44
ja, denke schon... der Autor hat imho auch nicht sehr viel Zeit, sich darum zu kümmern - das Projekt ist atm irgendwie sehr ruhig. Ein Patch für QT 3.1.2 wurde erst nach mehrmaligen Postings behoben, obwohl der Patch bekannt war...

anda_skoa
09-05-2003, 17:06
In anderen Headern passt es.

Hab das auf die Schnelle nur in mainwin.h gesehen.

getUrlViewer() ist eine Methode von MainWindow

Man findet sie selbst nicht mit grep, weil sie mit einem Macro generiert wird :rolleyes:

Wenn du nach UrlViewer grepst, findest du die Variable.
Komischerweise ein char* statt einem QString, aber der Source scheint ohnehin überhohlungsbedürftig zu sein.

Ciao,
_