Datei an Funktion übergeben

Alles rund um die Programmierung mit Qt
Antworten
mr14
Beiträge: 2
Registriert: 13. September 2016 11:39

Datei an Funktion übergeben

Beitrag von mr14 »

Hallo allezusammen

Kurz vorweg, ich bin noch ziemlich neu was Qt und die GUI Entwicklung angeht. Kurz zu meinem Projekt. Ich hab eine Software geschrieben, die eine .stl Datei einließt und ein Programm für einen Industrieroboter erzeugt. Leider hab ich bisher immer nur mit de Command Window gearbeitet und den Programm Aufruf so gemacht, dass ich das Programm im Command Window mit den einzelnen Parametern aufrufe. Das funktioniert schon ganz gut, aber nur wenn sich die .stl Datei im selben Ordner befindet.
Jetzt ist es an der Zeit eine einfache Benutzeroberfläche zu entwickeln. Folgendes möchte ich machen:
  • Zuerst die Datei mit dem QFileDialog am PC auswählen
  • Drei numerische Parameter vom Benutzer eingeben lassen (oder auf Standardwerten belassen)
  • Roboterprogramm erstellen sobald ein Push-Button geklickt wird.
Bis jetzt hab ich es mit einem Tutorium geschafft einen Push-Button so zu gestalten, dass sich der FileDialog öffnet und ich Datein im .stl-Format auswählen kann. Zur Zeit wird der Pfad zur Datei einfach nur in einer MessageBox angezeigt. Was zu tun ist ist also die Datei irgendwie an mein Programm zu übergeben.
In meinem Programm für das Command Window sieht das ganze so aus:

Code: Alles auswählen

    for (int i=1; i<argc;) {
     if (0==strcmp(argv[i], "-model")) {
            strcpy(modelFileName, argv[i+1]);
            i+=2;
        }
        .
        .
        .
     else {
            ++i;
        }
    }

    // Parse the file and generate a TriangleMesh
    TriangleMesh mesh;
    if (stlToMeshInMemory(modelFileName, &mesh, isBinaryFormat)!=0)
        return 1;
    fprintf(stderr, "Mesh has %d triangles\n", mesh.size());
Ich hab aber leider überhaupt keine Ahnung wie ich eine Datei in Qt an meine Funktion übergeben kann. Eine weitere Frage von mir wäre in welches File ich meinen Quellcode kopieren muss. Soweit ich verstanden habe ist in mainwindow.ui die Graphische Darstellung meiner Oberfläche und in mainwindow.cpp die ganzen Handler gespeichert. Kann ich mein Programm einfach in main.cpp kopieren und dort, dann einfach weiterarbeiten?
Ich weiß es sind viele Fragen und vor allem die von einem kompletten Anfänger, aber vielleicht kann mir doch einer Helfen.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: Datei an Funktion übergeben

Beitrag von Christian81 »

Willst Du ein anderes Programm aufrufen oder direkt eine C++-Funktion aufrufen?
Anderes Programm aufrufen: QProcess
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
mr14
Beiträge: 2
Registriert: 13. September 2016 11:39

Re: Datei an Funktion übergeben

Beitrag von mr14 »

Hallo Christian81

Eigentlich war mein Plan das gesamte alte Programm in mein Qt Projekt zu importieren. Ich hab jetzt Programm, das so funktioniert wie ich es brauche. Jetzt wollte ich die Funktionen aus dem alten Programm kopieren und in Qt einfügen. Dafür müsste ich es nur schaffen die Datei an die Funktion stlToMeshInMemory zu übergeben.

Grüße
Bernhard
dacown
Beiträge: 15
Registriert: 21. März 2016 17:10

Re: Datei an Funktion übergeben

Beitrag von dacown »

hi, ich weis ein wenig spät, aber vl hilt dir das weiter

Dieser code muss dann vor deinem Aufgerufen werden

Code: Alles auswählen

    QFileDialog FileDialog(this);
    FileDialog.setFileMode(QFileDialog::ExistingFile);
    QString fileName = FileDialog.getOpenFileName(this, tr("Öffne Datei"),
                                                    "c:/",
                                                    tr("Konfigdatei (*.stl)"));
    ui->lineEdit_Allgemein_Konfigurationsdatei_ImportPfad->setText(fileName);

Dein Code einwenig abgeändert

Code: Alles auswählen

   
    // Parse the file and generate a TriangleMesh
    TriangleMesh mesh;
    QString sModelFileName = ui->lineEdit_Allgemein_Konfigurationsdatei_ImportPfad->text();
    if( !sModelFileName .isEmpty() )
    {
    	if (stlToMeshInMemory(sModelFileName , &mesh, isBinaryFormat)!=0)
        	return 1;
    }
    fprintf(stderr, "Mesh has %d triangles\n", mesh.size());
Antworten