Seite 1 von 1

Connect an eine beliebige Funktion

Verfasst: 15. April 2005 22:35
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

Verfasst: 16. April 2005 00:39
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

Verfasst: 17. April 2005 01:13
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

Verfasst: 18. April 2005 09:17
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