Qt - Ich scheiter schon am Notepad



  • 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