Seite 1 von 1

Links aus Message Box heraus öffnen

Verfasst: 11. November 2005 21:24
von siik
Hallo,

ich möchte für eine Anwendung ein About-Window erstellen, in dem neben einer kurzen Beschreibung auch Links zur Projektseite (html) und zur Hilfedatei (pdf) angegeben werden. Die Seite bzw. Datei soll bei Klick auf den Link mit der entsprechenden Standardanwendung geöffnet werden. Das Ganze muss unter Linux funktionieren und sehr schön wärs, wenns auch unter Windows liefe.
Geht sowas überhaupt? Kann mir jemand einen Tipp geben? Ich find irgendwie keine Klasse die so aussieht als könnte man sowas mit ihr hinkriegen.
QTextBrowser taugt zur Anzeige der Projektseite nicht, da diese nicht nur aus Text bestehen wird. Sollen ja auch Screenshots gezeigt werden usw.

Grüße,

siik

Verfasst: 11. November 2005 21:47
von BartSimpson
Ich glaube der textbrowser geht trotzdem, da ja der qassisten auch bilder anzeigen kann und glaube ich auch bloss ein grosser QTextBrowser ist. Hast du es mal versucht?

Verfasst: 11. November 2005 22:15
von siik
Hmm, es funktioniert schon aus einem anderen Grund nicht: Die Projektseite wird mit Zope dynamisch generiert, ich kann also keinen direkten Dateinamen angeben. Ich hab versucht mit setSearchPaths den Pfad zu einer anderen Projektseite zu setzen (unsere eigene existiert noch gar nicht), aber ich bekomme immer eine Meldung dass die Datei nicht geöffnet werden konnte.

Re: Links aus Message Box heraus öffnen

Verfasst: 14. November 2005 07:38
von macman
siik hat geschrieben:Geht sowas überhaupt? Kann mir jemand einen Tipp geben? Ich find irgendwie keine Klasse die so aussieht als könnte man sowas mit ihr hinkriegen.
Eine Klasse dafür gibt es nicht. Wenn es mit der Standardanwendung geöffnet werden soll, dann sag dem zugrunde liegenden Betriebssystem das es etwas öffnen soll.

Code: Alles auswählen

#ifdef Q_WS_WIN
		ShellExecute(NULL, "open", myPDF_or_MyHTML, NULL, NULL, SW_SHOW);
#endif
So langsam könnten die Trolls ruhig sowas einbauen. Die Frage taucht andauernd auf :)

Verfasst: 14. November 2005 12:05
von FlorianBecker
Ich habe da eine meiner Meinung nach elegantere Zeile:

Code: Alles auswählen

QString app;
QStringList s;
#ifdef Q_OS_WIN
app = "rundll32.exe";
s << "url.dll,FileProtocolHandler" << url;
#endif
QProcess::execute( app, s );
Eleganter ist, das man damit wirklich alles aufrufen kann und das man damit die Übergaben direkt steuern kann.

Verfasst: 14. November 2005 20:49
von siik
Hm, ok, das ist ne Teil-Lösung für Windows, die hab ich hier im Forum auch schon gefunden. Eigentlich muss es unter Windows gar nicht funktionieren, also wenn ich das nicht hinkriege ist es überhaupt kein Problem.

Teil-Lösung deshalb, weil ich jetzt eine QMessageBox fürs About-Window verwende. Ich kann zwar im Text einfach Links setzen, aber die sind nicht "anklickbar". Wahrscheinlich lass ichs jetzt einfach als Text-Only, wer die Seite sehn will muss halt die URL kopieren.

Trotzdem danke.

siik

Verfasst: 15. November 2005 07:15
von macman
siik hat geschrieben:Ich kann zwar im Text einfach Links setzen, aber die sind nicht "anklickbar".
Keine Ahnung wie dein Text aussieht, aber wenn Du die Links in ein eigenes QLabel packst, dann kannst Du auch auf ein entsprechendes mouseReleaseEvent reagieren.

Verfasst: 15. November 2005 09:55
von FlorianBecker
Benutzt du Qt3 oder Qt4, und welches TextFormat benutzt du für die MessageBox?

Verfasst: 15. November 2005 17:53
von siik
Qt4

Der Text wird aus einem HTML-File gelesen:

Code: Alles auswählen

AboutWindow::AboutWindow( QWidget *parent ) : QMessageBox( parent )
{
   QFile file( ABOUT_SOURCE );

   if ( file.open(QIODevice::ReadOnly) )
   {
      this->setText( QString(file.readAll()) );
   }
   else
      this->setText( QString("Error: File ") + QString(ABOUT_SOURCE) +
                           QString(" not found") );
}