Qt-GUI Fragen vom Anfänger



  • weil in deinem verändertem code die objekte keine zeiger mehr sind kannst du new nicht mehr verwenden, also einfach weglassen!



  • So ungefähr:
    Die pfeile musst du durch punkte ersetzen.

    #include <QtGui/QApplication>
    #include <QHBoxLayout>
    #include <QPushButton>
    #include <QLabel>
    #include <iostream>
    
    using namespace std;
    
    int main(int argc, char *argv[])
    {
        QApplication programm(argc, argv);
    
        QWidget container;
    
        QHBoxLayout hboxlayout;
    
        QLabel text = "Text";
        QPushButton btn ="Change";
    
        hboxlayout.addWidget(&text);
        hboxlayout.addWidget(&btn);
    
        container.setLayout(&hboxlayout);
        container.show();
    
        return programm.exec();
    }
    


  • Ah, ich Depp. Da ich aus Java komme und es da dieses new gibt bei Objekterzeugung. Das habe ich durcheinander gebracht. Aber ich programmier auch erst seit 2 Tagen mit c++ 🙂
    Hmm danke!
    Eine weitere etwas kniffligere Frage, zumindest für mich:

    #include "gaestebuch.h"
    #include <string>
    #include <iostream>
    #include <fstream>
    
    using namespace std;
    
    Gaestebuch::Gaestebuch(){
        string name;
        string entry;
        bool end = false;
        int decision = 0;
    
        ofstream txtFile;
        txtFile.open("Gaestebuch.txt");
    
        while(!end){
    
            cout << "***************************************" << endl;
            cout << "Name:" << endl;
            cin >> name;
            cout << endl;
            cout << "Eintrag:" << endl;
            cin >> entry;
            cout << endl;
            cout << "Weiteren Eintrag hinzufügen?(1 = Ja - 2 = Nein)" << endl;
            cin >> decision;
    
            txtFile << name << endl << entry << endl << endl;
    
            if(decision == 2){
                end = true;
                txtFile.close();
                cout << endl;
            }
        }
    }
    

    Diese Skript erstellt mir eine Textdatei und haut auch die variablen rein.
    Das Problem ist nur, dass, sobald ich bei Eintrag einen Wert, wie z.b. "Eintrag 1" eingebe(Leerzeichen vor der 1), scheint er meine cin >> decision zu ignorieren und gleich die while zu beenden.



  • cin liest nur bis zum nächsten whitespace zeichen (entertaste,leertaste,tabtaste).
    d.h bei dir wird "eintrag" eingelesen, durch das leerzeichen wird die eingabe beendet und decision wird eingelesen.Um eine ganze Zeile einzulesen verwende getline(cin,entry).Davor musst du allerding noch cin.sync() schreiben.

    Code:

    anstatt cin >> entry;

    cin.sync();
    getline(cin,entry);

    Das cin.sync() braucht man wenn man cin und getline() verwendet.

    Welches Qt Tutorial verwendest du? Ich will Qt demnächst auch mal lernen.



  • Für den Anfang kann ich dieses Video-Tutorial empfehlen. Dort kann man sich schnell einen Überblick über Qt verschaffen.

    http://www.youtube.com/user/VoidRealms



  • Nochmal, lass die Finger von Qt. Das ist ein durchaus ernst gemeinter Ratschlag. Lern RICHTIG C++. Das kann durchaus ein halbes oder auch ein ganzes Jahr dauern, bis du die Grundlagen einigermaßen beherrschst. Alles andere führt nur dazu, dass du irgendwas falsches lernst. C++ ist nicht Java. Es bringt gar nichts, sich gleich auf irgendwelche Frameworks zu stürzen, ohne die Sprache und ihre Paradigmen zu verstehen.



  • @mechanics
    du hast recht, aber was zeiger, referenzen sind weiss ich. wie vererbung klappt auch. mit oop habe ich seit 1 1/2 Jahren erfahrung(ok das ist nicht viel)..
    deswegen ist mein problem, dass ich die grundlagen so weit drin habe, dass ich neue sachen anschauen, und währenddessen die lücken auffüllen kann, die ich bei den grundlagen noch habe.

    aber vorerst werde ich mich auch besser mit konsolenanwendungen zufrieden geben.

    @gfenz
    hier:
    http://www.youtube.com/watch?v=pQHFqp0NK4E&feature=relmfu
    English aber echt gut erklärt!



  • Das Problem sind nicht Zeiger oder Referenzen oder OOP. C++ ist einfach anders. Du glaubst zu wissen, was Zeiger oder Referenzen sind, aber es geht nicht um das Grundprinzip oder die Syntax. Es steckt einfach mehr dahinter und man braucht Zeit, das zu verinnerlichen.
    Als ich mit C++ angefangen habe, konnte ich auch schon mehrere andere Sprachen (auch Java) und hab mir gedacht, ist doch alles dasselbe, nur die Syntax ist etwas anders. Damit bin ich ständig auf die Nase gefallen. Bis irgendwann kapiert habe, dass C++ einfach anders ist und angefangen habe, die Sprache an sich zu lernen und mit anderen Augen zu sehen.



  • hmm ich arbeite mich jetzt ersteinmal in den c++ standard rein, bis ich das routinemäßig kann. ich denke das ist eine gute basis für framework projekte später.



  • Kenan schrieb:

    hmm ich arbeite mich jetzt ersteinmal in den c++ standard rein, bis ich das routinemäßig kann. ich denke das ist eine gute basis für framework projekte später.

    kauf dir ein gutes buch und programmiere mal nur auf der konsole!
    ich kann "der c++ programmierer" empfehlen.

    ich habe privat eigentlich nur konsole programmiert und in der arbeit auf einem embedded system mit eigener gui, hatte also wenig plan von gui frameworks.

    nun habe ich seit ein paar tagen privat mit Qt angefangen, und bin begeistert, wie leicht man damit arbeiten kann. aber eben weil ich die grundlagen von c++ schon verinnerlicht habe.
    also auch von mir der tipp: lern c++, und dann lern Qt. dann erst wirst du damit deine freude haben.

    gerade wenn man von java kommt muss man viel nachholen, sonst kommt schlimmer c++ code dabei raus (throw new exception und so stilblüten...).


Anmelden zum Antworten