durch drücken eines buttons ein verzeichnis öffnen

Alles rund um die Programmierung mit Qt
Antworten
rungaaz
Beiträge: 8
Registriert: 13. Juli 2009 20:41
Wohnort: BAYERN!

durch drücken eines buttons ein verzeichnis öffnen

Beitrag von rungaaz »

servus,

ich versuche gerade ein (GUI) programm zu schreiben, das einen ordner bzw. ein verzeichnis öffnet.

Code: Alles auswählen

    #include <QApplication>
    #include <QWidget>
    #include <QPushButton>
    #include <cstdio>
    
    
    void open_path()
    {
         system("eplorer E:\\");
    }
    
    
    int main(int argc, char *argv[])
    {
        QApplication app(argc, argv);
        
        QWidget window;
        window.setGeometry(640,325,400,400);
        
        QPushButton ws_01("Datenträger E", &window);
        ws_01.setGeometry(150,180,100,40);
        
        QObject::connect(&ws_01, SIGNAL(clicked()), &app, SLOT(open_path()));
        
        window.show();
        return app.exec();
    }
wenn ich jetzt den button anklicke passiert aber nichts (also es öffnet sich kein nettes explorerfenster, das mir den inhalt des oben angegebenen verzeichnisses anzeigt)

warum ist das so?


mfg rungaaz
solarix
Beiträge: 1133
Registriert: 7. Juni 2007 19:25

Beitrag von solarix »

und was bringt dich auf die Idee, dass "void open_path() " irgendwie mit "app" (connect(&ws_01,SIGNAL(clicked()), &app,SLOT(open_path()))) zusammenhängt?

[EDIT]
Und falls du das obige Problem gelöst hast... ein "eplorer" gibt's bei Windows nicht..
rungaaz
Beiträge: 8
Registriert: 13. Juli 2009 20:41
Wohnort: BAYERN!

Beitrag von rungaaz »

ooh ja stimmt,

mit was soll ich das dann connecten?

oh ja sorry schreibfehler
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

Entweder eine Klasse von QObject ableiten und da dann diesen SLOT implementieren. Oder halt gleich eine von QWidget ableiten, in dem Widget den Button und andere Widgets in ein Layout packen, den SLOT definieren und im Konstruktor connecten.
Wenn du NUR den Button hast, kannst du direkt von QPushButton ableiten.
RavenIV
Beiträge: 267
Registriert: 21. Januar 2009 14:24
Wohnort: Waldshut

Re: durch drücken eines buttons ein verzeichnis öffnen

Beitrag von RavenIV »

rungaaz hat geschrieben: wenn ich jetzt den button anklicke passiert aber nichts (also es öffnet sich kein nettes explorerfenster, das mir den inhalt des oben angegebenen verzeichnisses anzeigt)

warum ist das so?
Qt ist objektorientiert.
Da ist nichts mit reinem C-Code.

Schau Dir mal die Qt-Beispiele und Doku an, wie das dort gehandelt wird.
Linux, das längste Text-Adventure aller Zeiten
rungaaz
Beiträge: 8
Registriert: 13. Juli 2009 20:41
Wohnort: BAYERN!

Beitrag von rungaaz »

naja aber was ist den daran so falsch, wenn man ein funktion in einem slot aufruft?

gut da muss ich ehrlich dazusagen ich habe keine ahnung was ich statt &app schreiben soll.

ich habe mit ein qt buch gekauft und auch schon ein bisschen durchgeblättert. aber mit durchblättern alleine wirds wohl nicht getan sein.
das typische machen wollen aber nicht machen können eben.
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

connect() verbindet Signale mit SLOTS (und Signalen) zwischen OBJEKTEN. Ein Objekt ist eine Instanz einer Klasse, Signal und SLot müssen als Member dieser Klassen deklariert sein.

Dein Versuch ging über eine freie Funktion. Diese steht in keinerlei Verbindung zu einem Objekt (außer vllt. die Parameter). Frei eben. Und darum hat die nix in nem connect verloren! Und genau das wüsstest du, wenn du dir die Qt-Doku zu connect(), QObject, und ein paar der examples anschauen würdest.
rungaaz
Beiträge: 8
Registriert: 13. Juli 2009 20:41
Wohnort: BAYERN!

Beitrag von rungaaz »

ok schon verstanden :oops:

werd mich dann mal ranmachen...
Antworten