Seite 1 von 1

durch drücken eines buttons ein verzeichnis öffnen

Verfasst: 25. Juli 2009 14:46
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

Verfasst: 25. Juli 2009 17:41
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..

Verfasst: 26. Juli 2009 12:45
von rungaaz
ooh ja stimmt,

mit was soll ich das dann connecten?

oh ja sorry schreibfehler

Verfasst: 26. Juli 2009 19:31
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.

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

Verfasst: 27. Juli 2009 09:12
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.

Verfasst: 27. Juli 2009 20:44
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.

Verfasst: 27. Juli 2009 21:31
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.

Verfasst: 27. Juli 2009 22:04
von rungaaz
ok schon verstanden :oops:

werd mich dann mal ranmachen...