Seite 1 von 1

Datei an Funktion übergeben

Verfasst: 13. September 2016 11:56
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.

Re: Datei an Funktion übergeben

Verfasst: 13. September 2016 19:00
von Christian81
Willst Du ein anderes Programm aufrufen oder direkt eine C++-Funktion aufrufen?
Anderes Programm aufrufen: QProcess

Re: Datei an Funktion übergeben

Verfasst: 13. September 2016 19:45
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

Re: Datei an Funktion übergeben

Verfasst: 25. Oktober 2016 15:20
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());