Qt Qwidgets mit connect



  • Hallo
    Ich habe einmal ein QMainWindow mit einer QMenuBar. Wenn man auf einen Trenner der QMenuBar klickt wird ein QWidget Fenster geöffnet.
    Nun möchte ich, wenn man auf einen Button klickt, in dem QWidget Fenster einen Text aus einem QLineedit auslesen und in einem QListWidget anzeigen.

    Hier die connect Anweisungen aus dem QWidget Fenster:

    connect(add, SIGNAL(clicked()),this,SLOT(addv()));
    connect(close, SIGNAL(clicked()),this,SLOT(close())); //dies funktioniert komischer Weise
    

    und noch die public slots:

    ....
    public slots:
       void addv();
    

    Kann mir jmd helfen?
    Danke 🙂



  • Schaut auf den ersten Blick ok aus, was ist denn das Problem?



  • Das der Slot addv() nicht aufgerufen wird. 😞 Wenn ich für addv() close() schreib gehts...
    Hab auch schon probiert einen anderen Slot zu schreiben, der einfach eine Messagebox öffnet, aber dies wurde auch nicht ausgeführt -.-



  • Hast du das Q_OBJECT Macro in deiner Klassendeklaration?



  • ja aber dann kommen immer 3 Linker Fehler O.o

    1>Option.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""public: virtual struct QMetaObject const * __cdecl Option::metaObject(void)const " (?metaObject@Option@@UEBAPEBUQMetaObject@@XZ)".
    1>Option.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""public: virtual void * __cdecl Option::qt_metacast(char const *)" (?qt_metacast@Option@@UEAAPEAXPEBD@Z)".
    1>Option.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""public: virtual int __cdecl Option::qt_metacall(enum QMetaObject::Call,int,void * *)" (?qt_metacall@Option@@UEAAHW4Call@QMetaObject@@HPEAPEAX@Z)".
    


  • Dann musst nochmal qmake aufrufen.



  • ok vielen Dank :9 hat funktioniert aber jetzt hab ich ein anderes Problem -.-
    Heute wollte ich das Programm neu erstellen und starten, aber immer wenn ich iwas angeklickt hab (ein button oder so) kam ein Fehler, obwohl ich nichts am Projekt geändert habe...
    Ich habe einfach ein neues Projekt erstellt und die Daten dort reinkopiert aber jetzt kommt beim kompilieren immer die Linkerfehler wie oben. Auch wenn ich qmake nochmal aufrufe...



  • Baut qmake dann auch dein neues Projekt oder noch das alte?



  • Ka ich hab das Projekt einfach nochmal in ein qmake generiertes Projekt umgewandelt und dann erstellt (hab auch schon ein neues Projekt erstellt un den ganzen Code reinkopiert und dann nochmal als qmake generiertes Projekt umgewandelt...)
    Kann ich qmake eig auch iwi aufrufen ohne das umwzuwandeln?
    Oder kann ich das auch iwi manuell machen?



  • lolipoplol schrieb:

    Kann ich qmake eig auch iwi aufrufen ohne das umwzuwandeln?

    Wir machen das in der Arbeit eigentlich anders rum. Wir verwalten alle Projekte und die dazugehörenden Dateien über pro und pri Dateien, und lassen dann qmake laufen, um Visual Studio Projekte oder Makefiles daraus zu erzeugen.



  • Ich versteh grad iwi nicht ganz wie ich qmake laufen lass...
    Hab sonst immer einfach "Projekt in qmake gerneriertes Projekt" ausgewählt 🙂



  • Mit was arbeitest du? Visual Studio, QtCreator? Ich benutz das meist auf der Kommandozeile, mit der Integration in Visual Studio kenn ich mich auch nicht so aus.



  • ja benutz Visual Studio 2012 🙂
    Immer wenn ich das jetzt erstellen will kommen die Linker Fehler

    1>Option.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""public: virtual struct QMetaObject const * __cdecl Option::metaObject(void)const " (?metaObject@Option@@UEBAPEBUQMetaObject@@XZ)".
    1>Option.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""public: virtual void * __cdecl Option::qt_metacast(char const *)" (?qt_metacast@Option@@UEAAPEAXPEBD@Z)".
    1>Option.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""public: virtual int __cdecl Option::qt_metacall(enum QMetaObject::Call,int,void * *)" (?qt_metacall@Option@@UEAAHW4Call@QMetaObject@@HPEAPEAX@Z)".
    

    auch wenn ich das Projekt vorher in ein "qmake generiertes Projekt" umwandle...



  • Hallo,
    ich verwende VS 2010 und habe das gleiche Problem, wenn ich ein qwidget erzeugen will.

    Gibt es vielleicht klassische Anfängerfehler die diese Fehlermeldungen hervor rufen?


Anmelden zum Antworten