Qt - Ich scheiter schon am Notepad



  • Hi,

    Ich wollte heute damit anfangen mich in Qt einzulesen, jedoch scheitere ich schon an diesem einfachen Beispiel:

    http://developer.qt.nokia.com/wiki/Schnelleinstieg_in_die_Programmierung_mit_Qt#b2ef45da6b51f3172cfed1d96e7aa463

    Ab Subclass verstehe ich nur noch Bahnhof.
    Ich raff nicht wo der "neue" Code den sie da zeigen hin soll.
    Soll das alles in 1 .ccp oder muss ich nun zusätzliche erstellen ?

    Ich bin generell auch noch ein C++ Neuling deswegen ist das vermutlich eine etwas dumme Frage, ich bitte sie jedoch trotzdem zu beantworten.

    Danke...



  • Als Neuling fäng man mit der Konsole an, lass Qt links liegen und arbeite dich mit dem Grundlagen ein.



  • Ich bin generell auch noch ein C++ Neuling deswegen ist das vermutlich eine etwas dumme Frage, ich bitte sie jedoch trotzdem zu beantworten.

    Dumme Fragen gibt es nicht, muss aber meinem Vorposter recht geben, du solltest lieber mit den Grundlagen anfangen bevor du dich in ein Framework rein arbeitest.

    Bevor du fragen stellst wie "Wie fange ich am besten an?", "Welche Bücher soll ich mir holen?" solltest du die Forensuche verwenden ( diese Themen wurden bereits ausführlich behandelt )



  • Schon klar, ich wollt bei Qt auch nur mal reinschauen.
    Nun lässt mir das aber keine Ruhe, könnte mir also bitte trotzdem jemand sagen wie ich das zu verstehen habe 🙂



  • patmast3r schrieb:

    Ab Subclass verstehe ich nur noch Bahnhof.
    Ich raff nicht wo der "neue" Code den sie da zeigen hin soll.
    Soll das alles in 1 .ccp oder muss ich nun zusätzliche erstellen ?

    Steht auch auf der Seite ( siehe ab .pro Datei erstellen )
    Klassendefinition in notepad.h
    Konstruktordefinition in notepad.cpp

    In der main instanziierst du dann statt eines QWidget Objekts ein Notepad Objekt und rufst dann die Methode "show()" auf.



  • Ahh...okay muss ich später noch mal lesen....danke !



  • Sry, das ich euch weiter damit nerve aber ich würde das echt gern zum Laufen kriegn weil ich sonst keine Ruhe habe 🙂

    Ich habe nun folgendes:

    untitled.pro:

    HEADERS =  notepad.h
    SOURCES =  notepad.cpp \
               main.cpp
    

    notepad.h

    #ifndef NOTEPAD_H
    #define NOTEPAD_H
    #include <QtGui>
    
    class Notepad : public QMainWindow
              {
                 Q_OBJECT
    
             public:
                 Notepad();
    
            private slots:
                void open();
                void save();
               void quit();
    
            private:
                QTextEdit *textEdit;
    
                QAction *openAction;
                QAction *saveAction;
                QAction *exitAction;
                QMenu *fileMenu;
            };
    #endif // NOTEPAD_H
    

    main.cpp:

    #include <QtGui>
    #include <notepad.h>
    
    main( argv, char **args)
            {
              QApplication app(argv, args);
    
              QTextEdit *textEdit = new QTextEdit;
              QPushButton *quitButton = new QPushButton("&Quit");
    
              QObject::connect(quitButton, SIGNAL(clicked()), qApp, SLOT(quit()));
    
              QVBoxLayout *layout = new QVBoxLayout;
              layout->addWidget(textEdit);
              layout->addWidget(quitButton);
    
              Notepad window;
              window.setLayout(layout);
    
              window.show();
    
              return app.exec();
          }
    

    notepad.ccp:

    #include "notepad.h"
    
    Notepad::Notepad()
             {
                openAction = new QAction(tr("&Open"), this);
                saveAction = new QAction(tr("&Save"), this);
                exitAction = new QAction(tr("E&xit"), this);
    
                connect(openAction, SIGNAL(triggered()), this, SLOT(open()));
                connect(saveAction, SIGNAL(triggered()), this, SLOT(save()));
                connect(exitAction, SIGNAL(triggered()), qApp, SLOT(quit()));
    
                fileMenu = menuBar()->addMenu(tr("&File"));
                fileMenu->addAction(openAction);
                fileMenu->addAction(saveAction);
                fileMenu->addSeparator();
                fileMenu->addAction(exitAction);
    
                textEdit = new QTextEdit;
                setCentralWidget(textEdit);
    
                setWindowTitle(tr("Notepad"));
            }
    

    Wenn ich das laufen lassen will kommt:

    Fehler:expected constructor, destructor, or type conversion before '(' token

    Was mache ich falsch 😞



  • C++-Grundlagen:
    * Rückgabetypen von Funktionen (hier main)
    * Parameterdeklaration
    * Typ von Variablen

    alles zu suchen in deiner main() (Compiler sagt dir ja wo...)



  • Ich hab den Code so von der Qt-Seite und bin davon ausgegangen das der auch stimmen wird.
    Wenn die Fehler so einfach sind kann sie mir dann nicht einfach jemand sagen ?

    Wie gesgat es geht nur noch darum das zum Laufen zu kriegen, danach mach ich weiter mit Grundlagen...



  • Das hast du von der Qt-Seite?

    main( argv, char **args)
    

    Da fehlt der Returntyp der Funktion und der Typ des ersten Funktionsparameters!



  • hab das gerade ausgebessert bekomm aber nun weiter Fehler.
    Ich werd wohl darauf verzichten müssen und erstmal c++ von a-z fertig lesen...schade



  • Du musst noch die Slots implementieren ( nimm sie am besten raus, zum anzeigen des Windows brauchst du die nicht, einfach die private Slots auskommentieren und die entsprechenden Signal Slot verbindungen im Konstruktor )

    und nimm bitte "" für eigene Headerdateien ( #include "notepad.h" statt #include <notepad.h> )



  • Die Fehlermeldung, die Du hier gepostet hast ist unvollständig.
    Es fehlt der Verweis auf die Quelldatei und die Zeile in der der Fehler auftritt.
    Und in dieser Zeile muss man nachschauen, was unrichtigt ist.



  • Es hat mittlerweile geklappt, danke für eure Hilfe.
    Jetzt kann ich wieder zurück zu den Basics, ohne ständig dieses eine Qt-Beispiel im Kopf zu haben 🙂


Anmelden zum Antworten