Qt4: applikation dunkel ausfuehren

Alles rund um die Programmierung mit Qt
Antworten
joebar
Beiträge: 177
Registriert: 3. Oktober 2006 02:04

Qt4: applikation dunkel ausfuehren

Beitrag von joebar »

Hallo,

ich habe eine Anwendung die von Eingabedaten ein Ergebnis berechnet und diese auf die Platte schreibt.

Ich möchte jetzt sowas haben. Starten der Anwendung via

myapplication -b -i /path/to/input/file

Wenn der Parameter b gesetzt ist soll das Input File automatisch gelesen werden, die Berechnung durchgeführt werden und nachdem das Resultat auf der Platte ist soll sich die Anwendung selber beenden. Meine Idee war im Konstruktor zu prüfen ob b gesetzt ist und dann die Berechnungen zu machen und die Anwendung zu beenden. Ich bekomme die Anwendung aber nicht beendet. Das close() reagiert einfach nicht, wohl weil mein Konstruktor noch nicht fertig ist. Wie könnte ich das am besten machen?

Danke,
J.
CaptnChaos
Beiträge: 605
Registriert: 28. Juni 2007 15:01
Kontaktdaten:

Beitrag von CaptnChaos »

ich denke qt und c++ ist für sowas suboptimal.
schau dir für sowas lieber eine skriptsprache wie python an.
das geht schneller und einfacher und ist nicht so riesig, wie es eine qt anwendung werden würde.
RHBaum
Beiträge: 1436
Registriert: 17. Juni 2005 09:58

Beitrag von RHBaum »

das geht schneller und einfacher und ist nicht so riesig
Naja, ob nen interpretiertes script langsamer als nen compiliertes ist, darueber laesst sich streiten, genau so was denn groesser ist, die Qtlibs, oder die core python engine z.b.

@joebar
was spricht dagegen zwei programme zu machen, eines mit und eines ohne GUI, dafuer aber kommandozeilen orientiert.
Fuer den anwender, der beim aufruf natuerlich genau weiss was er will, machts kaum unterschied, ob er fuer die GUI app MyApp, udn fuer die commandozeilenversieon MyAppc oder sowas schreibt.

Bei ner reinen commandozeilenversion hasst den vorteil, das dich ums schliessen der GUI gar ned mehr kuemmern musst. Und Code nicht doppelt zu entwickeln trotz unterschiedlicher uebersetzungseinheiten, dafuer gibt es libs (dynamisch oder statisch)
Mit der QT kann man auch konsolenprogs schreiben.

Ciao ...
CaptnChaos
Beiträge: 605
Registriert: 28. Juni 2007 15:01
Kontaktdaten:

Beitrag von CaptnChaos »

Naja, ob nen interpretiertes script langsamer als nen compiliertes ist, darueber laesst sich streiten, genau so was denn groesser ist, die Qtlibs, oder die core python engine z.b.
ich meinte nich später beim ausfühern, sondern beim erstellen des Programms. Und die QtLibs braucht man für ein kommandozeilenscript nicht...

Wenn dus unbedingt in c++ machen willst, würde ich vorschlagen, das du in der main funktion die Parameter parst und auf bools, int und QString bzw std::string verteilst und deiner Hauptanwendung (die nicht mehr als ein QObject sein muss) übergibst.
Wird kein Parameter übergeben, startest du eine GUI, die sich dann die Werte zusammenklicken lässt und selbst eins von deinen Rechen-QObjects aufruft.
RHBaum
Beiträge: 1436
Registriert: 17. Juni 2005 09:58

Beitrag von RHBaum »

ich meinte nich später beim ausfühern, sondern beim erstellen des Programms. Und die QtLibs braucht man für ein kommandozeilenscript nicht...
Ob fuer ihn Scripts geeigneter sind oder nen eigenes binary, da gibts zu viele Faktoren, die da reinspielen, was wir nicht fuer ihn entscheiden koennen.
- Vielleicht ist Laufzeit ja nen problem, weisst du was er mit dem prog genau macht ?
- Nen Interpreter installiert vorraussetzen (Perl, Java Python etc) scheitert oftmals an den Installationsbedingungen. Wenn das prog zigtausend mal installiert werden soll, wuerd ich die fremdabhaengigkeiten so gering wie moeglich halten.
....
Sicher, ne ueberlegung isses immer wert, wowas mal kurz mit scripts abzuhandeln, aber das wird er sicher scho gemacht haben.

Was ebenfalls gegen die Scriptentwicklung spricht, ist das er auch ne GUI version hat / haben moechte. In beiden muesste er dann die selbe logic implementieren, bei script und C++ GUI dann wahrscheinlich 2 mal, was durchaus den vorteil des scriptes des weniger entwicklungsaufwandes, wieder negieren koennte ....

BTW fuer linux kompatible commandozeilen-synthax sollt es fertige parser auch geben.... vielleicht sollt er die sich anschauen ob die ne vereinfachung sind ....

Ciao ...
khrl01
Beiträge: 28
Registriert: 28. August 2007 13:06

Re: Qt4: applikation dunkel ausfuehren

Beitrag von khrl01 »

joebar hat geschrieben:Hallo,

ich habe eine Anwendung die von Eingabedaten ein Ergebnis berechnet und diese auf die Platte schreibt.

Ich möchte jetzt sowas haben. Starten der Anwendung via

myapplication -b -i /path/to/input/file

Wenn der Parameter b gesetzt ist soll das Input File automatisch gelesen werden, die Berechnung durchgeführt werden und nachdem das Resultat auf der Platte ist soll sich die Anwendung selber beenden. Meine Idee war im Konstruktor zu prüfen ob b gesetzt ist und dann die Berechnungen zu machen und die Anwendung zu beenden. Ich bekomme die Anwendung aber nicht beendet. Das close() reagiert einfach nicht, wohl weil mein Konstruktor noch nicht fertig ist. Wie könnte ich das am besten machen?

Danke,
J.
Ich glaube Du denkst einfach zu kompliziert. Mach doch eine ganz normale GUI-Applikation.
Dort gibt es eine Funktion main(int argc, char** argv);
Direkt nach dem main-start schreibst Du deine Prüfung auf Parameter.
Falls der Parameter gesetzt ist, erledigt Dein Programm die Lese- und Schreibarbeiten.
Falls er nicht gesetzt ist starte das GUI...

ungefähr so:

Code: Alles auswählen

int main(int argc,char**argv)
{
   if (argv[1] == '-b') {
      startReadWrite()....
      exit(0);
   }
   QApplication a(argc,argv);
   MyGUIClass c;
   c.show();
   return a.exec();
}
grüsse
karl-heinz
Antworten