tutorials.de Buch-Aktion 05/2012
Like Tree5Danke
  • 1 Beitrag von MCoder
  • 1 Beitrag von chibisuke
  • 1 Beitrag von MCoder
  • 1 Beitrag von Matthias Reitinger
  • 1 Beitrag von MCoder
ERLEDIGT
NEIN
ANTWORTEN
14
ZUGRIFFE
403
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Cedric Cedric ist offline Rookie
    Registriert seit
    Jul 2011
    Beiträge
    7
    Hallo Zusammen

    Mein Name ich Cedric und ich komme aus der Schweiz.
    Schon als 20 Jähriger versuchte ich mich im Programmieren.
    Erst Basic, dann Pascal, und VB über JAVA und nun bin ich seit Monaten damit Beschäftigt C++ zu lernen.
    Heute bin ich 46 Jahre Jung und begriffstutzig was Programmieren anbelangt.
    Der Eine oder Andere wird mich jetzt etwas belächeln, aber das dürft ihr von mir aus auch tun.

    Für das ich eigentlich überhaupt keine Ahnung habe, bin ich bis jetzt eigentlich erstaunlich weit gekommen.
    Nur eben jetzt harkt es und ich bin schon seit Tagen am Googeln um mein Problem zu lösen.
    Da ich kein Englisch kann, respektive sehr wenig, bin ich auf Hilde in Deutscher Sprache angewiesen.
    Ich will damit nicht sagen, dass ich gut deutsch kann, nein auch da habe ich mit der Rechtschreibung so meine Mühe.
    Aber da lasse ich mich auch nicht unter kriegen, denn da bin ich eine Kämpfernatur.

    So nun zu meinem Problemchen.

    Ich habe ein Fenster kreiert, in dem ich einen Button und ein lineedit eingesetzt habe.

    Bei dem Button soll ich einen Festplatten Pfad auswählen, der mir das Arbeitsverzeichnis ausgeben und Speichern soll.
    Später gibt es dann 2 Fenster, nennen wir die A und B.
    Bei A kommt der Aktive und bei B der Passive Ordner aus dem Stammverzeichnis rein.
    Je nachdem wo sich das andere Programm befindet, werden danach trotzdem Ordner A und B am richtigen Ort erscheinen, da bei jedem User danach diese Ordner gleich heissen und am gleichen Ort sich befinden.

    Nun wenn ich mit dem Button der den Stammordner aussuchen will, klappt dies auch.
    Nur wird dann im Lineedit fenster der Pfad nicht ausgewiesen und ich weiss auch nicht ob der Pfad danach gespeichert ist.

    Mein Skript schaut so aus:

    Main.cpp
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    
     
    int main(int argc, char *argv[])
    {
        QApplication a(argc, argv);
        MainWindow w;
        w.show();
     
        return a.exec();
    }
     
    using namespace std;
     
    int main()
    {
        DIR *hdir;
        struct dirent *entry;
     
        hdir = opendir(".");
        do
        {
            entry = readdir(hdir);
            if (entry)
            {
                cout << entry->d_name << endl;
            }
     
         } while (entry);
        closedir(hdir);
    }

    Und:
    Mainwindow.cpp
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    
    void MainWindow::on_pushButton_2_clicked()
    {
     
     
        BROWSEINFO anzeigen;
        memset( &anzeigen, 0, sizeof( BROWSEINFO ) );
        anzeigen.ulFlags = BIF_RETURNONLYFSDIRS;
     
        ITEMIDLIST* browser = SHBrowseForFolder( &anzeigen );
        if( browser ) {
     
        }
     
     
     }
     
    void MainWindow::on_lineEdit_selectionChanged()
    {
        QCoreApplication::applicationDirPath();
    }

    Die Includs habe ich gemacht und jetzt bin ich da am grübeln und suchen.
    Jedoch obwohl dies ja oft gebraucht wird, habe ich bis jetzt nichts darüber gfunden.

    Hoffentlich kann einer von Euch einem angehenden Greisen mal unter die Arme greiffen.

    Recht herzlichen Dank fürs ernst nehmen.

    Liebe Grüsse

    Cedric
     

  2. #2
    MCoder MCoder ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jul 2005
    Ort
    München
    Beiträge
    2.448
    Hallo,
    und herzlich willkommen bei tutorials.de!

    Ich hoffe, ich habe dein aktuelles Problem richtig verstanden: Nach Auswahl eines Ordners willst du diese Auswahl in einem QLineEdit anzeigen und außerdem noch irgendwie speichern?

    Nach Auswahl mit SHBrowseForFolder musst du den gewählten Pfad noch aus der Datenstruktur herausziehen. Das passiert mit SHGetPathFromIDList. Den Code habe ich dir weiter unten aufgeschrieben. Die Zuweisung an das Edit-Control erfolgt mit der Methode "setText()" vom QLineEdit. Da ich deine Vraiablennamen ( das UI::... - Objekt und das QLineEdit-Objekt) nicht kenne, kann ich dir diese Zeile nicht aufschreiben.
    Code cpp:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    
    void MainWindow::on_pushButton_2_clicked()
    {
        BROWSEINFO anzeigen;
        memset( &anzeigen, 0, sizeof( BROWSEINFO ) );
        anzeigen.ulFlags = BIF_RETURNONLYFSDIRS;
     
        ITEMIDLIST* browser = SHBrowseForFolder( &anzeigen );
        if( browser )
        {
            char lpBuffer[MAX_PATH];
            
            if( SHGetPathFromIDList(&browser, lpBuffer) )
            {
                // TODO: Zuweisung an LineEdit        
            }
        }
     }

    Was du mit "on_lineEdit_selectionChanged" bezweckst ist mir nicht ganz klar. Zum einen warum du auf dieses Signal reagieren willst und zum anderen ist der Aufruf von "QCoreApplication::applicationDirPath();" ziemlich sinnfrei. Diese Methode gibt den Pfad der EXE zurück, der allerdings von dir nicht verarbeitet wird.

    Noch ein Tipp: Benutze bitte aussagekräftige Titel für deine Fragen. Ein kurzer Stichpunkt zum Problem und auch die Info, dass du mit Qt arbeitest wären angebracht gewesen.

    Gruß
    MCoder
    Cedric bedankt sich. 
    "The three chief virtues of a programmer are: Laziness, Impatience and Hubris."
    --- Larry Wall

  3. #3
    chibisuke chibisuke ist offline Mitglied Brillant
    Registriert seit
    Sep 2003
    Beiträge
    807
    Ich sehe in deinem code nirgends das initialisieren von (D)COM.

    Um SHBrowseForFolder benutzen zu können, muss der thread in dem du es aufrufst COM initialisiert haben, sonst schlägt der aufruf fehl.

    You must initialize Component Object Model (COM) before you call SHBrowseForFolder. If you initialize COM using CoInitializeEx, you must set the COINIT_APARTMENTTHREADED flag in its dwCoInit parameter. You can also use CoInitialize or OleInitialize, which always use apartment threading. If you require drag-and-drop functionality, OleInitialize is recommended because it initializes the required OLE as well as COM.
    Code :
    1
    2
    3
    4
    5
    6
    
    HRESULT r = OleInitialize();
    if(r != S_OK) {
        MessageBoxW(NULL, "Failed to initialize OLE/COM", "Error", MB_OK);
        exit(-1);
    }
    .....

    Nicht vergessen OleUninitialize(); bevor das Programm beendet wird
    Cedric bedankt sich. 

  4. #4
    Cedric Cedric ist offline Rookie
    Registriert seit
    Jul 2011
    Beiträge
    7
    Hallo Zusammen

    @MCoder:
    Recht herzlichen Dank für Deine so schnelle Antwort.
    Man bin ich ein Dödel, habe ich die ganze Zeit wärend ich meinen Beitrag geschrieben habe, daran gedacht zu erwähnen das ich mit QT4 arbeite.
    Ich werde mal in meinen 4 Bücher die ganzen Änderungen von Dir nach lesen.

    @chibisuke:

    Danke auch für Deine schnelle Antwort.
    werde mal rätzseln, wo ich das inizialisieren wie in deinem Beispiel rein kommt, hab ja geschrieben das ich der Englischen Sprache nicht mächtig bin und daher kann ich mit dem Text in der Sprechblase eher weniger anfangen.

    Gut ich bin ja eine Kämpfernatur und irgendwie werde ich dies auch noch in die Reihe bekommen.

    Danke Euch Beiden veroerst mal für Eure Hilfe und ich werde die Erfolge dann hier rein tippen.

    Schönes Wochenende gewünscht.

    Liebe Grüsse

    Cedric

    ----------------
    Arbeite mit QT4
     

  5. #5
    Cedric Cedric ist offline Rookie
    Registriert seit
    Jul 2011
    Beiträge
    7
    Zitat Zitat von MCoder Beitrag anzeigen
    Hallo,
    und herzlich willkommen bei tutorials.de!

    Ich hoffe, ich habe dein aktuelles Problem richtig verstanden: Nach Auswahl eines Ordners willst du diese Auswahl in einem QLineEdit anzeigen und außerdem noch irgendwie speichern?
    Ja das hast Du richtig verstanden.

    Zitat Zitat von MCoder Beitrag anzeigen
    Die Zuweisung an das Edit-Control erfolgt mit der Methode "setText()" vom QLineEdit. Da ich deine Vraiablennamen ( das UI::... - Objekt und das QLineEdit-Objekt) nicht kenne, kann ich dir diese Zeile nicht aufschreiben.
    Genau da beginnt mein Problem.
    Ich habe alles noch nie verstanden und so wie dies ausschaut werde ich dies wohl auch nie verstehen.
    Ich verstehe nicht einmal diesen Zitierten Teil wirklich.

    Zitat Zitat von MCoder Beitrag anzeigen
    Was du mit "on_lineEdit_selectionChanged" bezweckst ist mir nicht ganz klar. Zum einen warum du auf dieses Signal reagieren willst und zum anderen ist der Aufruf von "QCoreApplication::applicationDirPath();" ziemlich sinnfrei. Diese Methode gibt den Pfad der EXE zurück, der allerdings von dir nicht verarbeitet wird.
    Das war einer meiner unwissenden Versuche mein Problem zu lösen, bevor ich mir allen Mut zusammen genommen hatte meine Frage in einem Forum zu posten.

    Ich habe in vielen Foren Neulingsberichte und anfragen gefunden und gelesen.

    Meistens hatte ich aber dann meinen Kopf gesenkt und war sehr traurig, wie man in gewissen Foren mit neu Einsteigern umgeht.
    Aussagen wie " Versuche mal das Handbuch zu lesen, oder lies doch erst mal ein Handbuch, bevor Du versuchst etwas zu programmieren, dass Du nie verstehen wirst."

    Solche Aussagen hatten mir oft den Mut genommen endlich mal klar Schiff zu machen und mein Problem zu erläutern.
    Mehr als eine Woche, habe ich in meinem Urlaub Handbücher gewälzt und gelesen, stundenlang, aber leider nur das wenigste behalten können.

    Ich bin mir sicher, dass viele der Jungs und vielleicht auch Maedels dies auch gemacht hatten.

    Klar jemandem etwas via Text bei zu bringen ist nur den Wenigsten gegeben und sicher für den User der hilft sowie auch dem der um Hilfe ersucht eine Nervensache, da der Fragende wie auch bei mir etwas vergessen ging zu erwähnen wie mit welcher C++ Software man es versucht etc.

    Gegenseitig dann wieder die Erwartung des Hilfeleistenden über eine gewisse Vorkenntnis des Fragenden.

    So kommen immer wieder viele Aspekte zusammen, die für jene wie ich es bin, (Begriffstutzig) die trotz Hilfe einfach da stehen wie bestellt und nicht abgeholt.

    Zum Hinweis von chibisuke mit der Initialisierung von COM musste ich auch gleich wieder meine 4 Bücher zur Hand nehmen und wie schon vorher suchen, suchen und wieder suchen.

    Fündig aber wurde ich wiederum noch nicht und ich habe bald das Gefühl, dass in den Bücher sehr viel behandelt wird, nur einfach nicht das was man wirklich als Einsteiger benötigt.
    Nicht einmal das Buch C++ für Dummies ist so verfasst, dass man es versteht.

    Klar ich könnte alle meine 4 Listings hier rein stellen und das Problem ist vielleicht gelöst, aber es würde mein Problem nicht lösen.

    Ich hatte auch schon daran gedacht einen Einsteiger Kurs zu machen, aber diese sind in der Schweiz schweine Teuer und zu dem wäre dies für mich wohl nur Geld das ich danach aus dem Fenster geworfen hätte, da gehe ich lieber jetzt eine Curry Wurst essen und geniesse mal die Sonne.

    Sorry Jungs für meine Klageworte, aber jetzt fühle ich mich wohler.

    Zitat Zitat von MCoder Beitrag anzeigen
    Noch ein Tipp: Benutze bitte aussagekräftige Titel für deine Fragen. Ein kurzer Stichpunkt zum Problem und auch die Info, dass du mit Qt arbeitest wären angebracht gewesen.

    Gruß
    MCoder
    Jep das ist voll klar, aber ich dachte, da ich mich vorerst Vorstellte sei mein Titel so auch gut dazu.
    Das mit QT4 war eindeutig ein Versäumnis meinerseit.

    Und noch einmal, danke für Eure Hilfe, die ist eindeutig besser als mein Beklagtes von vorher.
    Da bin ich sicher beim richtigen Forum gelanet.

    Liebe Grüsse

    Cedric
     

  6. #6
    MCoder MCoder ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jul 2005
    Ort
    München
    Beiträge
    2.448
    Hallo Cedric,

    was ich noch anmerken wollte: Mit deinem jugendlichen Alter brauchst du dich hier gar nicht herauszureden

    Mit welcher Entwicklungsumgebung arbeitest du denn eigentlich? Wenn du mit dem Qt-Framework arbeitest und damit zumindest schon mal ein Fenster auf den Bildschirm gebracht hast, hast du wahrscheinlich auch eine gewisse Unterstützung, also automatisch generierten Code, durch die Entwicklungsumgebung erhalten. In diesen Code stecken Informationen drinnen, die du für die weitere Arbeit benötigst.

    Da du die GUI vermutlich im Designer erstellt hast, benötigst du den dort vergebenen Namen für das Editfeld. Poste doch mal den Konstruktor von deinem MainWindow. Dort sollte erkennen können, wie die GUI initialisiert wird und ich kann dir sagen, wie 'setText()' aufgerufen wird.

    Da sich der Ordnerauswahldialog wohl schon öffnet, ist die COM-Initialisierung erstmal nicht das vordergründige Problem.

    Gruß
    MCoder
    Cedric bedankt sich. 
    "The three chief virtues of a programmer are: Laziness, Impatience and Hubris."
    --- Larry Wall

  7. #7
    Cedric Cedric ist offline Rookie
    Registriert seit
    Jul 2011
    Beiträge
    7
    Antwort dritter Versuch.

    Also noch mal von Vorne.

    Hallo MCoder, man habe ich immer Mühe Menschen mit Pseudonamen an zu schreiben.
    Darf ich Dich Larry nennen? (Siehe dein Zitat) So fällt mir die Kommunikation etwas einfacher. Danke

    Also in dem Falll habe ich Deine Antwort schon kurz nach 18.00 Uhr gesehen und gelesen.
    Aber ich bin eher der Typ, der dann erst mal ausprobiert und sucht und Bücher wältzt um vielleicht alles zu lernen und vieleicht auch zu verstehen, wie die Zusammenhänge sind.
    Es bringt mir nicht viel, wenn ich dann jeden Code auf dem Silbertablet serviert bekomme.
    Also hatte ich erst mal was gegessen und in die Glotze geschaut.
    Nach 22.15 Uhr setzte ich mich dann wieder hinter mein PRogrämmchen und Bücher um etwas von deinem letzten Beitrag zu erhaschen.
    Natürlich probierte ich auch diverses aus.

    Natürlich hatte ich kein Erfolgserlebnis ausser vielleicht wenn ich Dir aus der Richtigen Datei den Code anzeige.

    Also wenn ich Dich richtig verstanden habe, so meitest Du den folgenden Code Auszug aus der Datei:
    MainWindow.ui

    Ui.MainWindows.ui
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    
    #ifndef UI_MAINWINDOW_H
    #define UI_MAINWINDOW_H
     
    #include <QtCore/QVariant>
    #include <QtGui/QAction>
    #include <QtGui/QApplication>
    #include <QtGui/QButtonGroup>
    #include <QtGui/QHeaderView>
    #include <QtGui/QLineEdit>
    #include <QtGui/QMainWindow>
    #include <QtGui/QMenuBar>
    #include <QtGui/QPushButton>
    #include <QtGui/QScrollArea>
    #include <QtGui/QStatusBar>
    #include <QtGui/QToolBar>
    #include <QtGui/QWidget>
     
    QT_BEGIN_NAMESPACE
     
    class Ui_MainWindow
    {
    public:
        QWidget *centralWidget;
        QScrollArea *scrollArea;
        QWidget *scrollAreaWidgetContents;
        QScrollArea *scrollArea_2;
        QWidget *scrollAreaWidgetContents_2;
        QLineEdit *lineEdit;
        QPushButton *pushButton;
        QLineEdit *lineEdit_2;
        QPushButton *pushButton_2;
        QMenuBar *menuBar;
        QToolBar *mainToolBar;
        QStatusBar *statusBar;
     
        void setupUi(QMainWindow *MainWindow)
        {
            if (MainWindow->objectName().isEmpty())
                MainWindow->setObjectName(QString::fromUtf8("MainWindow"));
            MainWindow->resize(683, 667);
            centralWidget = new QWidget(MainWindow);
            centralWidget->setObjectName(QString::fromUtf8("centralWidget"));
            scrollArea = new QScrollArea(centralWidget);
            scrollArea->setObjectName(QString::fromUtf8("scrollArea"));
            scrollArea->setGeometry(QRect(20, 130, 261, 471));
            scrollArea->setWidgetResizable(true);
            scrollAreaWidgetContents = new QWidget();
            scrollAreaWidgetContents->setObjectName(QString::fromUtf8("scrollAreaWidgetContents"));
            scrollAreaWidgetContents->setGeometry(QRect(0, 0, 259, 469));
            scrollArea->setWidget(scrollAreaWidgetContents);
            scrollArea_2 = new QScrollArea(centralWidget);
            scrollArea_2->setObjectName(QString::fromUtf8("scrollArea_2"));
            scrollArea_2->setGeometry(QRect(320, 130, 241, 471));
            scrollArea_2->setWidgetResizable(true);
            scrollAreaWidgetContents_2 = new QWidget();
            scrollAreaWidgetContents_2->setObjectName(QString::fromUtf8("scrollAreaWidgetContents_2"));
            scrollAreaWidgetContents_2->setGeometry(QRect(0, 0, 239, 469));
            scrollArea_2->setWidget(scrollAreaWidgetContents_2);
            lineEdit = new QLineEdit(centralWidget);
            lineEdit->setObjectName(QString::fromUtf8("lineEdit"));
            lineEdit->setGeometry(QRect(32, 40, 511, 21));
            pushButton = new QPushButton(centralWidget);
            pushButton->setObjectName(QString::fromUtf8("pushButton"));
            pushButton->setGeometry(QRect(571, 577, 75, 23));
            lineEdit_2 = new QLineEdit(centralWidget);
            lineEdit_2->setObjectName(QString::fromUtf8("lineEdit_2"));
            lineEdit_2->setGeometry(QRect(28, 87, 171, 20));
            pushButton_2 = new QPushButton(centralWidget);
            pushButton_2->setObjectName(QString::fromUtf8("pushButton_2"));
            pushButton_2->setGeometry(QRect(550, 40, 111, 23));
            pushButton_2->setDefault(false);
            pushButton_2->setFlat(false);
            MainWindow->setCentralWidget(centralWidget);
            menuBar = new QMenuBar(MainWindow);
            menuBar->setObjectName(QString::fromUtf8("menuBar"));
            menuBar->setGeometry(QRect(0, 0, 683, 21));
            MainWindow->setMenuBar(menuBar);
            mainToolBar = new QToolBar(MainWindow);
            mainToolBar->setObjectName(QString::fromUtf8("mainToolBar"));
            MainWindow->addToolBar(Qt::TopToolBarArea, mainToolBar);
            statusBar = new QStatusBar(MainWindow);
            statusBar->setObjectName(QString::fromUtf8("statusBar"));
            MainWindow->setStatusBar(statusBar);
            QWidget::setTabOrder(scrollArea, scrollArea_2);
            QWidget::setTabOrder(scrollArea_2, pushButton);
            QWidget::setTabOrder(pushButton, pushButton_2);
            QWidget::setTabOrder(pushButton_2, lineEdit_2);
     
            retranslateUi(MainWindow);
     
            QMetaObject::connectSlotsByName(MainWindow);
        } // setupUi
     
        void retranslateUi(QMainWindow *MainWindow)
        {
            MainWindow->setWindowTitle(QApplication::translate("MainWindow", "MainWindow", 0, QApplication::UnicodeUTF8));
    #ifndef QT_NO_TOOLTIP
            lineEdit->setToolTip(QString());
    #endif // QT_NO_TOOLTIP
            pushButton->setText(QApplication::translate("MainWindow", "Beenden", 0, QApplication::UnicodeUTF8));
            pushButton_2->setText(QApplication::translate("MainWindow", "Open X-Plane Pfad", 0, QApplication::UnicodeUTF8));
        } // retranslateUi
     
    };
     
    namespace Ui {
        class MainWindow: public Ui_MainWindow {};
    } // namespace Ui
     
    QT_END_NAMESPACE
     
    #endif // UI_MAINWINDOW_H

    Wenn dies der Auszug ist, den Du meintest, so hatte ich dann doch ein Erfolgserlebnis.

    Jetzt wünsche ich Direinen schönen Samstag und danke für Deine Hilfe.

    Liebe Grüsse
    Cedric
    Geändert von Cedric (16.07.11 um 10:44 Uhr)
     

  8. #8
    Cedric Cedric ist offline Rookie
    Registriert seit
    Jul 2011
    Beiträge
    7
    Ich halt schon wieder.

    Larry ich weiss nicht ob ich der Geborene Programmierer bin, aber so wie es aussaut eher nicht oder QT4 ist nur Profis gedacht und nicht für mich.

    Mit dieser Fehlermeldung kann ich nichts aber auch gar nichts anfangen und wenn man im QT4 Designer dann erhoft mit F1 auch eine Antwort zu bekommen, meldet es einfach Kein eDokumentation verfügbar

    Das kommt wenn ich Dein im ersten Beitrag eingefügen Code benutze.
    Code :
    1
    2
    3
    
    ..\My-Scenery-finder\mainwindow.cpp:54: error: 
    cannot convert 'ITEMIDLIST**' to 'const ITEMIDLIST*' for argument '1' to 'BOOL 
    SHGetPathFromIDListW(const ITEMIDLIST*, WCHAR*)'

    Ich gehe ein kaufen, denn wenn der Wagen voll ist, habe ich 50€ ausgegeben, auch ohne C++

    Gruss
    Cedric
     

  9. #9
    Registriert seit
    Dec 2001
    Ort
    Bayern
    Beiträge
    5.802
    Blog-Einträge
    5
    Hallo Cedric,

    es wäre wohl am einfachsten, wenn du den Ordnerdialog auch über Qt erzeugst und nicht (wie bisher) direkt auf die Windows-API zurückgreifst. Das sähe dann z.B. so aus:

    Code cpp:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    #include <QFileDialog> // Diese Zeile am besten an den Anfang der Datei!
     
    void MainWindow::on_pushButton_2_clicked()
    {
        QString pfad = QFileDialog::getExistingDirectory(this);
        if (!pfad.isEmpty()) {
            lineEdit->setText(pfad);
        }
    }

    Grüße,
    Matthias
    Cedric bedankt sich. 
    „Gib einem Menschen einen Fisch, und er wird für einen Tag satt. Lehre ihn Fischen, und er wird ein Leben lang satt.“
    “For every complex problem, there is an answer that is short, simple and wrong.”
    “Pessimism is safe, but optimism is a lot faster!”


    Aktuelles Coding Quiz: #17 - Wörter kreuz und quer

  10. #10
    MCoder MCoder ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jul 2005
    Ort
    München
    Beiträge
    2.448
    Hallo Cedric,

    der Fehler beruht auf einem Tippfehler meinerseits, so ist es richtig:
    Code cpp:
    1
    
     if( SHGetPathFromIDList(browser, lpBuffer) )
    'browser' ist schon ein Zeiger, da braucht's den '&'-Operator nicht. Oder du verwendest die Lösung von Matthias Reitinger und arbeitest damit durchgängig mit Qt.

    Aus der 'Ui.MainWindows.ui' kann man schon entnehmen, das die Variable für das Editfeld 'lineEdit' heißt. Was jetzt noch fehlt ist der Name des Objekts der Klasse 'Ui_MainWindow', das in der MainWindow.h deklariert ist.

    Gruß
    MCoder
     
    "The three chief virtues of a programmer are: Laziness, Impatience and Hubris."
    --- Larry Wall

  11. #11
    Cedric Cedric ist offline Rookie
    Registriert seit
    Jul 2011
    Beiträge
    7
    Hallo Zusammen

    Also ich habe auch die Version von Matthias Reitinger ausprobiert.
    Da bekomme ich folgende Fehlermeldung

    Leider bin ich zu fest Anfänger um es selber in den Griff zu bekommen, wie ich es schon geschrieben habe.
    Ich bin ja nicht einmal in der Lage eine declaration selber zu machen trotz 4 Bücher die neben mir auf verscheidenen Stellen geöffnet sind.

    Code :
    1
    2
    
    ..\My-Scenery-finder\mainwindow.cpp: In member function 'void MainWindow::on_pushButton_2_clicked()':
    ..\My-Scenery-finder\mainwindow.cpp:66: error: 'lineEdit' was not declared in this scope

    Den Operator & kann es nicht gewesen sein MCoder, denn auch dann kommt dieser Fehler.

    Ich frage mich langsam ob ich nicht mein Vorhaben über den Jordan schmeissen soll und lieber nur Programme benutzen statt sie zu versuchen zu schreiben.
    Ich kapiers einfach nicht.

    Danke trotzdem für Eure Hilfe.

    Liebe Grüsse

    Cedric
     

  12. #12
    MCoder MCoder ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jul 2005
    Ort
    München
    Beiträge
    2.448
    Zitat Zitat von Cedric Beitrag anzeigen
    Also ich habe auch die Version von Matthias Reitinger ausprobiert.
    Da bekomme ich folgende Fehlermeldung
    Wie gesagt, dafür brauchst du noch den Namen des UI-Objektes:
    Code cpp:
    1
    
    [name-des-UI-Objektes]->lineEdit->setText(pfad);

    Zitat Zitat von Cedric Beitrag anzeigen
    Den Operator & kann es nicht gewesen sein MCoder, denn auch dann kommt dieser Fehler.
    Ein Fehler war's auf jeden Fall. Mir ist allerdings nicht klar, was jetzt noch schief geht. Ich würde ohnehin besser bei der reinen Qt-Variante bleiben. Lösungsmöglichkeit siehe oben.

    Ansonsten: Versuch's einfach weiter, obwohl der Einstieg manchmal schon etwas frustrierend sein kann.

    Gruß
    MCoder
    Cedric bedankt sich. 
    "The three chief virtues of a programmer are: Laziness, Impatience and Hubris."
    --- Larry Wall

  13. #13
    chibisuke chibisuke ist offline Mitglied Brillant
    Registriert seit
    Sep 2003
    Beiträge
    807
    Nur mal als gut gemeinter Rat nebenbei:

    Grade in der software entwicklung kommt man um englisch nicht rum.
    Fast alle API dokumentationen ect. sind fast ausschliesslich in englisch verfasst, daher würd ich dir empfehlen bevor du mit programmierung versuchst weiter zu machen dich erstmal damit n bisl vertraut zu machen.

    Du musst ja nicht alles 100%ig verstehen. Vielfach kann man auch mit tools wie translate.google.com oder babelfish arbeiten, oder wörterbücher wie babylon einsetzen.

    Ausserdem, ist C++ IMHO nicht unbedingt die richtige sprache für einen anfänger, grade wenn die englisch kenntnisse nicht ausreichen um technische dokumentationen halbwegs zu verstehen.

    Aus eigener erfahrung kann ich über das erlernen von C++ sagen:
    1) Assistenten und GUIs:
    Generieren code, den man nicht versteht, auf den man sich verlässt, und wenn irgendwas nicht funktioniert, steht man da wie ne kuh wenns donnert
    2.) objektorientierung:
    die OOP strukturen sind schwer zu durchblicken, weil es dem intuitivem ansatz etwas zu machen (schrittweise von A - Z) wiederspricht.
    3.) strenge typisierung:
    Unterschiedliche datentypen wie float, int oder char[] können ziemlich verwirrend sein.
    4.) Pointer:
    Das was jeder anfänger hast, weil er sich damit gerne irgendwo mit einem & oder * verhaut und die fehler nicht mehr wieder findet.

    Ich würde dir empehlen lieber erstmal mit PHP oder ähnlichem rum zu spielen.
    Der syntax ist grossteils ähnlich, allerdings ohne die oben genannten nachteile.
    Versuch dabei das konzept der Objektorientierten programmierung zu verstehen.
    Und versuch dich dannach, wenn das alles sauber klappt an C++.

    Und finger weg von irgendwelchen GUI designern oder ähnliches. Damit lernt man nix.
     

  14. #14
    Cedric Cedric ist offline Rookie
    Registriert seit
    Jul 2011
    Beiträge
    7
    Hallo Zusammen

    Zitat Zitat von MCoder Beitrag anzeigen

    Ansonsten: Versuch's einfach weiter, obwohl der Einstieg manchmal schon etwas frustrierend sein kann.

    Gruß
    MCoder
    Danke erst mal für all Eure Hilfe.
    Genau dies in Deinem Zitat MCoder werde ich machen.

    Da ich kein Browser Programm machen möchte kommt mir PHP schon mal nicht in Frage.
    Da ich auch nicht in Perl mein Progrägrammchen schreiben möchte ist schon klar weill meine Kumpels die dann dieses Programm benutzen möchten nicht auch noch den Perl Interpreter installieren möchten oder CGI Tauglichkeint.

    Daher habe ich mir jetzt das Buch C++ für Idjoten gekrallt, was dann genau wieder dies macht, was chibisuke mir angeraten hat, nicht mit Visuellem Zeugs meine ersten Schritte zu machen, sondern eben Zeile für Zeile von Hand.

    Bei dem Buch ist das Programm Code::Blocks mit geliefert und damit arbeite ich als mal das Buch schritt für Schritt durch und wenn ich alles begriffen habe, weiss ich auch wie man was Classifiziert und definiert etc.

    Somit werde ich mich hier aus meinem jetzigen Thread vorläuffig zurück ziehen und mich dann wenn ich dieses Buch Durch habe mien Info an Euch hier rein schreiben.

    Sollte ich wärend dem Buch durch akkern Fragen haben, die mir das Buch nicht verrät, werde ich es einfach mal hier nach fragen in dem Thread und so schauen aus dem ganzen was zu lernen, respektive mein Programm vielleicht dann selber korrigieren kann.

    Selbstverständlich werde ich dann auch den Fehler lokalisiert und eliminiert haben.
    Dann werde ich hier rein schreiben, was vergessen gegangen ist meiner Seite.

    In dem Sinne, danke mal für Eure Hilfe und man liest sich.

    Schöner Sonntag gewünscht.

    Cedric
     

  15. #15
    chibisuke chibisuke ist offline Mitglied Brillant
    Registriert seit
    Sep 2003
    Beiträge
    807
    Da ich kein Browser Programm machen möchte kommt mir PHP schon mal nicht in Frage.
    Man kann mit PHP auch normale konsolen anwendungen und sogar grafische anwendungen (PHP-GTK) erstellen. Genauso ist es möglich ausführbare dateien daraus zu compilern (pecl bcompiler)
     

Ähnliche Themen

  1. Antworten: 9
    Letzter Beitrag: 19.08.07, 20:14
  2. Begriff kVA
    Von Fuhrki im Forum Elektrotechnik
    Antworten: 6
    Letzter Beitrag: 27.02.05, 18:20
  3. Datei in der schon etwas steht noch etwas dazuschreiben
    Von Hafke im Forum Visual Basic 6.0
    Antworten: 2
    Letzter Beitrag: 29.09.04, 22:27
  4. Begriff für Roh-Filmmaterial
    Von ViB im Forum Videoschnitt, Videotechnik & -produktion
    Antworten: 6
    Letzter Beitrag: 14.10.03, 09:51
  5. begriff
    Von freekazoid im Forum Photoshop
    Antworten: 5
    Letzter Beitrag: 08.01.02, 16:57

Stichworte