c++ exe über eine QT GUI starten
c++ exe über eine QT GUI starten
Hallo,
ich hab noch nicht viel mit QT gemacht und bräuchte jetzt dringend Hilfe. Ich habe ein C++-Programm (alles schon kompiliert, die exe-Datei gibt es also) und dieses Programm möchte ich über eine QT-GUI, z.B. wenn ein Knopf gedrückt wird, ausführen. Im Grunde genommen ist das mit Hilfe von QProcess ja auch nicht besonders schwer, es funktioniert auch, wenn ich mein Email-Programm z.B. hochfahren lasse.
Aber die exe von meinem C++-Programm lässt sich nicht ausführen. Ich glaube, dass das unter anderem daran liegt, dass der main-Klasse Argumente übergeben werden. Die exe-Datei kann auch nur in MS Visual C++ ausgeführt werden, da die Argumente für die main-Datei dort in den Project-Properties stehen. Ich habe versucht diese Argumente mit addArgument zu setzten aber auch das hat nicht funktioniert.
Ich brauche jetzt keine fertigen Codestücke oder so was, es würde mir reichen, wenn mir jemand sagen kann, wo ich am besten nachsehe. Google habe ich auch schon bemüht bin mir aber nicht sicher wonach ich suchen soll.
Danke für eure Hilfe,
Isa
ich hab noch nicht viel mit QT gemacht und bräuchte jetzt dringend Hilfe. Ich habe ein C++-Programm (alles schon kompiliert, die exe-Datei gibt es also) und dieses Programm möchte ich über eine QT-GUI, z.B. wenn ein Knopf gedrückt wird, ausführen. Im Grunde genommen ist das mit Hilfe von QProcess ja auch nicht besonders schwer, es funktioniert auch, wenn ich mein Email-Programm z.B. hochfahren lasse.
Aber die exe von meinem C++-Programm lässt sich nicht ausführen. Ich glaube, dass das unter anderem daran liegt, dass der main-Klasse Argumente übergeben werden. Die exe-Datei kann auch nur in MS Visual C++ ausgeführt werden, da die Argumente für die main-Datei dort in den Project-Properties stehen. Ich habe versucht diese Argumente mit addArgument zu setzten aber auch das hat nicht funktioniert.
Ich brauche jetzt keine fertigen Codestücke oder so was, es würde mir reichen, wenn mir jemand sagen kann, wo ich am besten nachsehe. Google habe ich auch schon bemüht bin mir aber nicht sicher wonach ich suchen soll.
Danke für eure Hilfe,
Isa
mit qprocess kannst du herausfinden was der exe fehlt dll voanders oder was auch immer...
qt4 wohlverstanden....
normal ausfhuren so....
und process process.readAll() auslesen ... fehler kommen... dann dll nicht gefunden oder was auch immer....
qt4 wohlverstanden....
normal ausfhuren so....
Code: Alles auswählen
void Gui_Main::openInDefaultBrowser(const QString &url)
{
#if defined Q_WS_WIN
QProcess process;
process.setReadChannelMode(QProcess::MergedChannels);
process.start("cmd", QStringList() << "/c" << "start" << url);
process.waitForFinished();
#endif
#if defined Q_WS_X11
QProcess process;
process.setReadChannelMode(QProcess::MergedChannels);
process.start("firefox", QStringList() << url);
process.waitForFinished();
#endif
#if defined Q_WS_MAC
msgb->information( this , "Mac message","Not possibel to open Browser whit url \""+url+"\" !");
#endif
}
und process process.readAll() auslesen ... fehler kommen... dann dll nicht gefunden oder was auch immer....
Code: Alles auswählen
void Gui_FrontPage::TestQprocessqt4()
{
QProcess process;
process.setReadChannelMode(QProcess::MergedChannels);
process.start("ipconfig" , QStringList() << "/all");
if (!process.waitForFinished()) {
msgb->information( this , "QT4 function test", process.errorString() );
} else {
msgb->information( this , "QT4 function test", process.readAll() );
}
}
Hallo Patrik,
danke, dass du mir geholfen hast, aber es hat bereits funktioniert, nur die Ausgabe des Programms hat nicht geklappt. Die exe lief die ganze Zeit brav im Hintergrund, ich habe das erst gemerkt, als ich das Programm von Visual aus direkt ausführen wollt und es nicht funktioniert hat und im Taskmanger hab ich dann gesehen, dass es die ganze Zeit läuft. Tut mir leid und ist mir wirklich peinlich
Aber trotzdem vielen Dank vor allem für die schnelle Hilfe, ich werd deinen Code mit Sicherheit gut brauchen können um nachzusehen wie man so was besser schreibt als ich bis jetzt.
Grüße,
Isabelle
danke, dass du mir geholfen hast, aber es hat bereits funktioniert, nur die Ausgabe des Programms hat nicht geklappt. Die exe lief die ganze Zeit brav im Hintergrund, ich habe das erst gemerkt, als ich das Programm von Visual aus direkt ausführen wollt und es nicht funktioniert hat und im Taskmanger hab ich dann gesehen, dass es die ganze Zeit läuft. Tut mir leid und ist mir wirklich peinlich
Aber trotzdem vielen Dank vor allem für die schnelle Hilfe, ich werd deinen Code mit Sicherheit gut brauchen können um nachzusehen wie man so was besser schreibt als ich bis jetzt.
Grüße,
Isabelle
Irgendo .... in diesem forum habe ich gesehen wie man zuerst ueberpruefen kann ... ob einen von diesen prozesse bereit lauft... im grunde genommen ein kleinen taskmanager.... ... so das man zuerst prueft ob diese exe lauft und wenn sie nicht lauft via qprocess starten....
Visual studio ist fuer mich "Bahnhof" ... als ich Ihn installiert habe und 2 tage verloren habe mit diese 1000' knoepfen ... habe ich diesen ram fresser sofort deinstalliert... nun geht es bei mir viel besser mit Mingw compiler....
Visual studio ist fuer mich "Bahnhof" ... als ich Ihn installiert habe und 2 tage verloren habe mit diese 1000' knoepfen ... habe ich diesen ram fresser sofort deinstalliert... nun geht es bei mir viel besser mit Mingw compiler....
ich bin auch nicht gerade begeistert von Visual, vor allem weil es gerade bei QT wahnsinnig viele Linkfehler gibt, die sich erledigen, wenn man das projekt im QT-Designer erstellt und mit der Console compiliert. Aber ich muss es leider benutzen. Wegen diesem Taskmanager werd ich mal schauen, aber so weit ich mich erinnere, gibt es auch mit QT die Möglichkeit abzufragen, ob ein prozess bereits läuft.
Grüße,
Isa
Grüße,
Isa
die exe die qprocess aufmacht kann man status kontrollieren mit...
http://doc.trolltech.com/4.1/qprocess.h ... State-enum
doch was micht interessiert ist alle zu listen wie das ding ...
http://www.teamcti.com/pview/prcview.htm im dos 60kb ...
um die browser zu finden die installiert sind... und eventuel laufen....
da wenn ein browser lauft ... und man startet ein neuen process mit diesem einem browser friert qt ein .....
mit linux geht das viel einfacher mit "top" + grep...
http://doc.trolltech.com/4.1/qprocess.h ... State-enum
doch was micht interessiert ist alle zu listen wie das ding ...
http://www.teamcti.com/pview/prcview.htm im dos 60kb ...
um die browser zu finden die installiert sind... und eventuel laufen....
da wenn ein browser lauft ... und man startet ein neuen process mit diesem einem browser friert qt ein .....
mit linux geht das viel einfacher mit "top" + grep...
Ich werde das programm unter dem Link mir mal ansehen. Das sollte jetzt nur eine kleine Testanwendung sein, um zu sehen, ob sich das Programm überhaupt starten lässt und das tut es ja nun auch. Aber du hast Recht, wenn man eine richtige Anwendung haben will, dann sollte man so etwas vorher abklären.
Was mir allerdings aufgefallen ist, ist dass es sehr lange dauert, bis die Ausgabe des programms in meinem TextEdit - fenster auftaucht. Hast du eine Ahnung warum das so ist und ob man das evtl. beschleunigen könnte.
Grüße,
Isabelle
Was mir allerdings aufgefallen ist, ist dass es sehr lange dauert, bis die Ausgabe des programms in meinem TextEdit - fenster auftaucht. Hast du eine Ahnung warum das so ist und ob man das evtl. beschleunigen könnte.
Grüße,
Isabelle
ne... da musste ich schon wissen was dass fuer eine exe ist .. die so..... lange leitung hat .... im qprocess...
ein "ipconfig /all " kommt im qprocess in etwas 1 sekunde ... + darstellen im widged...
firefox aufmachen auch etwa eine sekunde....
wenn es lange prozesse sind kann man sie auch im hindergrund starten...
QProcess::ProcessChannelMode doku ....
Ich habe auch ein kleinen mini mac (15cmx15cmx5cm) fuer etwa 500 euro mit nur 250MB ram..
und kann sagen das allgemein appikationen sind auf mac schneller als auf windowxp mit 1000MB ram
gruesse aus der 19° grad italienische schweiz..
ein "ipconfig /all " kommt im qprocess in etwas 1 sekunde ... + darstellen im widged...
firefox aufmachen auch etwa eine sekunde....
wenn es lange prozesse sind kann man sie auch im hindergrund starten...
QProcess::ProcessChannelMode doku ....
Ich habe auch ein kleinen mini mac (15cmx15cmx5cm) fuer etwa 500 euro mit nur 250MB ram..
und kann sagen das allgemein appikationen sind auf mac schneller als auf windowxp mit 1000MB ram
gruesse aus der 19° grad italienische schweiz..
Ich hab in einem anderen Forum gelesen, dass die Funktion readStdout erst alles liest, was sie reinkriegt und dann die Ausgabe in meinem QTextEdit macht. Und dass es besser wäre mit readLineStdout zeilenweise zu lesen und dann direkt auszugeben. Mein Programm hat nämlich eine riesige Ausgabe. Das werde ich jetzt mal versuchen und dann darüber Bericht erstatten.
Grüße aus dem noch wärmeren (22°C) München
Grüße aus dem noch wärmeren (22°C) München
achtung ! readLineStdout ist qt3 .. im qt4 ist es readAll()
wichtig .. am ende ...
um fehler zu lesen oder ergebniss.... debuggen
gruesse aus 24° grad jetzt am schatten ... (steigend)
wichtig .. am ende ...
Code: Alles auswählen
if (!process.waitForFinished()) {
QMessageBox::information( this , "QT4 function test", process.errorString() );
} else {
QMessageBox::information( this , "QT4 function test", process.readAll() );
}
gruesse aus 24° grad jetzt am schatten ... (steigend)
Oh, danke, dass du mir Bescheid gesagt hast. ich arbeite momentan noch mit QT3 (ist nur zum Testen) die richtige GUI soll aber dann in QT4 geschrieben werden. Hatte einige Probleme bei der Installation von QT4 und habe, damit ich schon mal hübsches buntes vorführen kann, erst mal QT3 installiert. Wird sich demnächst aber noch ändern.
Ich glaube, bei uns ist es auch schon viel wärmer, aber ich habe jetzt kein Thermometer in der Nähe.
Trotzdem grüße, auch wenn es kühler sein sollte
Ich glaube, bei uns ist es auch schon viel wärmer, aber ich habe jetzt kein Thermometer in der Nähe.
Trotzdem grüße, auch wenn es kühler sein sollte