Problem mit Qt Statusbar



  • Hi,
    ich habe ein kleines Problem mit der Statusbar.
    Erstmal mein Code:

    #include <QtGui>
    
    int main(int argc, char **argv) {
            QApplication app(argc, argv);
    
            QMainWindow window;
            window.setWindowTitle("Titel");
    		window.setGeometry(50,50,500,300);
    
    		QStatusBar *statusbar;
    		//statusbar->showMessage("Statusbar");
    		window.setStatusBar(statusbar);
    
            window.show();
            return app.exec();
    }
    

    Das Programm funktioniert wenn ich die Zeile "window.setStatusBar(statusbar);" auskommentiere bzw. lösche.
    Dann allerdings ohne Statusbar:(
    Wenn ich die Zeile drinlasse und Debugge, hängt sich das Debuggen anscheinend auf, es kommt einfach nicht weiter und nach 5min hab ich abgebrochen.

    Wenn ich die Zeile "//statusbar->showMessage("Statusbar");" auskommentiere bekomme ich diesen "Fehler": http://imageshack.us/photo/my-images/692/45392833i.jpg/
    http://img692.imageshack.us/img692/253/45392833i.jpg

    Ich bin Anfänger in C++ und Qt und ich habe keine Ahnung woran es liegen könnte das es nicht klappt.
    Also bitte helft mir:D
    Schonmal Danke;)



  • öhm du hast einen invaliden zeiger übergeben und keinen auf ein gültiges objekt.



  • Als C++-Anfänger solltest du noch nicht Qt programmieren - dafür braucht es schon gutes C++-Wissen.
    Die Fehlermeldungen in nem Screenshot tu ich mir nicht an. Kopier doch den Text ab und poste ihn hier.
    Der (offensichtliche) Fehler: statusbar ist nicht initialisiert -> SegFault!



  • Du musst die Statusbar auch erstellen, nicht nur deklarieren:

    QStatusBar * statusbar = new QStatusBar(window);



  • Danke, aber eure Beiträge haben mir nicht viel geholfen.
    Ich weiß was ihr meint, aber auch das hat nicht geholfen.
    Und für diesen Anfängerfehler entschuldige ich mich.
    Ich hatte ein längeres Projekt geschrieben, und wollte dann eine Menüleiste hineinpacken, aber das ging nicht. Also habe ich versucht nur die Menüleiste zu machen. Ging auch nicht. Dann hab ich alles ausprobiert was mir eingefallen ist, hab mir Beispiele durchgelesen usw.
    Dann hab ich nochmal schnell das kleine Projekt geschrieben und hier gepostet, weil ich Hilfe brauchte.

    @arghonaut
    Und die Fehlermeldung hab ich nur in einem Screenshot gepostet, da diese für Visual Studio (fand ich) ziemlich unüblich im Fenster aufgegangen ist.
    Kannte ich nicht und ich wusste nicht wie ich das gut beschreiben soll.
    PS: arghonaut das nächste mal bitte nicht so angepisst klingen, das klingt direkt so total nett und hilfsbereit-.-

    Nja jetzt hab ich das über einen einfacheren Weg hinbekommen:

    #include <QtGui>
    
    int main(int argc, char **argv) {
    	QApplication app(argc, argv);
    	QMainWindow window;
    	window.setWindowTitle("Titel");
    	window.setGeometry(50,50,500,300);
    
    	window.statusBar()->showMessage("Statusbar");
    
    	window.show();
    	return app.exec();
    }
    

    Trotzdem danke für eure schnelle Hilfe;)
    lg Leon5x



  • Ich hab dir doch ganz klar geschrieben, was du machen musst. Es ist eine Zeile. Versuch sie zu verstehen 😉



  • Mechanics schrieb:

    Ich hab dir doch ganz klar geschrieben, was du machen musst. Es ist eine Zeile. Versuch sie zu verstehen 😉

    Ja hab ich auch verstanden, wie ich eig auch gesagt hatte.
    Ich habe dann mehrere Wege versucht sie zu erstellen, aber bei allen gab es Fehler:(
    Einer war zum Beispiel dass bei: "QStatusBar * statusbar = new QStatusBar(window);" das window dafür ein Zeiger sein müsste.
    Dann hab ich window eben als Zeiger auf das Objekt deklariert, es gab nicht mehr den Fehler aber dafür wieder den bzw. die anderen von vorher-.-
    Also hab ich ewig nach einem Weg gesucht es anders hinzubekommen, und jetzt auch einen gefunden;)

    Hast du das Beispiel von mir mal selbst debuggt und nicht nur drüber nachgedacht?:)
    Wenn nicht dann mach mal bitte und sag mir wie es bei dem anderen Weg geht, dann erkläre ich mich selbst für völlig verblödet xD

    lg Leon5x;)



  • Dein window ist halt ein Objekt und kein Zeiger, dann machst halt &window, dann hast einen Zeiger. Dir fehlen anscheinend noch komplett die Grundlagen. Selbstverständlich hab ich dein Beispiel nicht durchdebuggt und auch nicht ausprobiert 😉 In paar Jahren wirst du vielleicht verstehen, wie uninteressant das ist 😉


Anmelden zum Antworten