Qt4 Hello "Signale und Slots" World
Verfasst: 19. Januar 2007 11:09
Hallo,
ich möchte Slots und Signale selber definieren, leider ist das
Tutorial von Trolltech nicht gerade hilfreich.
http://doc.trolltech.com/4.0/signalsandslots.html
-------------------Teil 1 --------------------------------------
#include <QObject>
class Counter : public QObject
{
Q_OBJECT
public:
Counter() { m_value = 0; }
int value() const { return m_value; }
public slots:
void setValue(int value);
signals:
void valueChanged(int newValue);
private:
int m_value;
};
---------------------------------------------------------------
---------------Teil2 -----------------------------------------
void Counter::setValue(int value)
{
if (value != m_value) {
m_value = value;
emit valueChanged(value);
}
}
--------------------------Teil3 ---------------------------------------
Counter a, b;
QObject::connect(&a, SIGNAL(valueChanged(int)),
&b, SLOT(setValue(int)));
a.setValue(12); // a.value() == 12, b.value() == 12
b.setValue(48); // a.value() == 12, b.value() == 48
-----------------------------------------------------------------------
ich verstehe das alles bis auf den Teil 3. Das ist die Definition
von dem Slot. Warum ist das nicht in der Klassendefinition drin?
Weil es jetzt nicht in der Klassendefinition mit drin ist weiss ich
erhlich gesagt nicht an welche sette das ins Programm gehört.
Könnte sich bitte jemand erbarmen und diese Codeschnipsel zu
einem lauffähigen Programm machen?
vielen dank im voraus
ich möchte Slots und Signale selber definieren, leider ist das
Tutorial von Trolltech nicht gerade hilfreich.
http://doc.trolltech.com/4.0/signalsandslots.html
-------------------Teil 1 --------------------------------------
#include <QObject>
class Counter : public QObject
{
Q_OBJECT
public:
Counter() { m_value = 0; }
int value() const { return m_value; }
public slots:
void setValue(int value);
signals:
void valueChanged(int newValue);
private:
int m_value;
};
---------------------------------------------------------------
---------------Teil2 -----------------------------------------
void Counter::setValue(int value)
{
if (value != m_value) {
m_value = value;
emit valueChanged(value);
}
}
--------------------------Teil3 ---------------------------------------
Counter a, b;
QObject::connect(&a, SIGNAL(valueChanged(int)),
&b, SLOT(setValue(int)));
a.setValue(12); // a.value() == 12, b.value() == 12
b.setValue(48); // a.value() == 12, b.value() == 48
-----------------------------------------------------------------------
ich verstehe das alles bis auf den Teil 3. Das ist die Definition
von dem Slot. Warum ist das nicht in der Klassendefinition drin?
Weil es jetzt nicht in der Klassendefinition mit drin ist weiss ich
erhlich gesagt nicht an welche sette das ins Programm gehört.
Könnte sich bitte jemand erbarmen und diese Codeschnipsel zu
einem lauffähigen Programm machen?
vielen dank im voraus