Connect an eine beliebige Funktion

Alles rund um die Programmierung mit Qt
Antworten
KarlBlau
Beiträge: 41
Registriert: 25. März 2005 14:31
Wohnort: Karlsruhe
Kontaktdaten:

Connect an eine beliebige Funktion

Beitrag von KarlBlau »

Hallo,

ein Klick auf einen Button soll den Aufruf einer beliebigen Funktion 'myFunction' zur folge haben. 'myFunction' ist eine globale Funktion.
Muss ich nun um die Connection zwischen dem Button->Klick und der Funktion zu erstellen die Funktion als Slot deklarieren oder geht das auch anders?

Falls es eine andere Möglichkeit gibt, wie könnte dann die connect-Befehls-Zeile aussehen?

Vielen Dank,

Karl
ChMaster
Beiträge: 252
Registriert: 23. Februar 2005 14:44
Wohnort: RP -> Alzey
Kontaktdaten:

Beitrag von ChMaster »

(geht auch anders, siehe dazu mein post ;)

Ps.: hmm... ich mach es meistens so, obs so richtig ist kann ich nicht
sagen, versuchen kann man alles ;)

cpp

Code: Alles auswählen

#include "tesklick.h"

TestKlick::TestKlick(QWidget* parent, const char* name, WFlags fl)
    : frmTestKlick(parent,name,fl)
{}

TestKlick::~TestKlick()
{}

void TestKlick::slotKlick()
{
    myFunc( ... );
}
in der header datei

Code: Alles auswählen

#ifndef TestKlick_H
#define TestKlick_H

class TestKlick : public frmTestKlick
{
    Q_OBJECT

public:
    TestKlick (QWidget* parent = 0, const char* name = "qdaocgr");
    ~TestKlick ();

   myFunktion *myFunc( .... ) {
          ....
   };

public slots:

    void slotKlick();

};

#endif
ChMaster
------------ Projekte------------
DBoxFE
DMS
First4 (Plugin-Develper)
KarlBlau
Beiträge: 41
Registriert: 25. März 2005 14:31
Wohnort: Karlsruhe
Kontaktdaten:

Beitrag von KarlBlau »

Hi,

danke für den Hinweis.

Wenn ich die Sachen bei mir starten will kommen folgende Warnungen und Fehler:

newProject fatal error LNK1120: 6 unaufgelöste externe Verweise
newProject warning LNK4199: /DELAYLOAD:comdlg32.dll wird ignoriert; keine Importe von comdlg32.dll gefunden
newProject warning LNK4199: /DELAYLOAD:oleaut32.dll wird ignoriert; keine Importe von oleaut32.dll gefunden
newProject warning LNK4199: /DELAYLOAD:winmm.dll wird ignoriert; keine Importe von winmm.dll gefunden
newProject warning LNK4199: /DELAYLOAD:wsock32.dll wird ignoriert; keine Importe von wsock32.dll gefunden
newProject warning LNK4199: /DELAYLOAD:winspool.dll wird ignoriert; keine Importe von winspool.dll gefunden
newProject error LNK2001: Nichtaufgelöstes externes Symbol "public: virtual bool __thiscall Yahoo::qt_property(int,int,class QVariant *)" (?qt_property@Yahoo@@UAE_NHHPAVQVariant@@@Z)
newProject error LNK2001: Nichtaufgelöstes externes Symbol "public: virtual bool __thiscall Yahoo::qt_emit(int,struct QUObject *)" (?qt_emit@Yahoo@@UAE_NHPAUQUObject@@@Z)
newProject error LNK2001: Nichtaufgelöstes externes Symbol "public: virtual bool __thiscall Yahoo::qt_invoke(int,struct QUObject *)" (?qt_invoke@Yahoo@@UAE_NHPAUQUObject@@@Z)
newProject error LNK2001: Nichtaufgelöstes externes Symbol "public: virtual void * __thiscall Yahoo::qt_cast(char const *)" (?qt_cast@Yahoo@@UAEPAXPBD@Z)
newProject error LNK2001: Nichtaufgelöstes externes Symbol "public: virtual char const * __thiscall Yahoo::className(void)const " (?className@Yahoo@@UBEPBDXZ)
newProject error LNK2019: Nicht aufgelöstes externes Symbol '"public: static class QMetaObject * __cdecl Yahoo::staticMetaObject(void)" (?staticMetaObject@Yahoo@@SAPAVQMetaObject@@XZ)', verwiesen in Funktion '"public: virtual class QMetaObject * __thiscall Yahoo::metaObject(void)const " (?metaObject@Yahoo@@UBEPAVQMetaObject@@XZ)'


Diese Meldungen kommen, sobald 'Q_OBJECT' in der cpp eingetragen wird.

Muss ich in keiner der beiden Dateien irgendwelche Header einbinden?

Gruss,

Karl
Goos
Beiträge: 360
Registriert: 17. August 2004 10:10
Wohnort: Black Forest

Beitrag von Goos »

Hi KarlBlau,

wenn Fehler immer dann auftauchen, wenn du ein Q_Object einbindest, dann ist es naheliegend, dass du vergessen hast dafuer entsprechende MOC-Dateien zu erstellen und einzubinden.

Goos
Antworten