As a pure test, I created a bogus slot in Canvas (::asd()).
I then did the following:
class Canvas : public QSFMLCanvas
{
Q_OBJECT
Q_PROPERTY(std::vector<Fault> faults READ GetFaults WRITE SetFaults NOTIFY FaultsEdited)
Q_PROPERTY(std::vector<Horizon> horizons READ GetHorizons NOTIFY HorizonsEdited)
std::vector<Fault> faults; //contains all faults in project
std::vector<Horizon> horizons; //contains all horizons in project
public:
Canvas
(const QPoint
& Position,
const QSize
& Size,
QWidget* Parent
=0);
Canvas();
std::vector<Fault> GetFaults() const;
void SetFaults(std::vector<Fault> v);
std::vector<Horizon> GetHorizons() const;
public slots:
void asd();
signals:
void FaultsEdited();
void HorizonsEdited();
};
Canvas::Canvas()
{
//...
connect(this,SIGNAL(FaultsEdited()),this,SLOT(asd()));
std::vector<Fault> v;
v.push_back(Fault());
SetFaults(v);
//...
}
void Canvas::SetFaults(std::vector<Fault> v)
{
faults=v;
}
void Canvas::asd()
{
int u=1;
}
class Canvas : public QSFMLCanvas
{
Q_OBJECT
Q_PROPERTY(std::vector<Fault> faults READ GetFaults WRITE SetFaults NOTIFY FaultsEdited)
Q_PROPERTY(std::vector<Horizon> horizons READ GetHorizons NOTIFY HorizonsEdited)
std::vector<Fault> faults; //contains all faults in project
std::vector<Horizon> horizons; //contains all horizons in project
public:
Canvas(const QPoint& Position, const QSize& Size, QWidget* Parent=0);
Canvas();
std::vector<Fault> GetFaults() const;
void SetFaults(std::vector<Fault> v);
std::vector<Horizon> GetHorizons() const;
public slots:
void asd();
signals:
void FaultsEdited();
void HorizonsEdited();
};
Canvas::Canvas()
{
//...
connect(this,SIGNAL(FaultsEdited()),this,SLOT(asd()));
std::vector<Fault> v;
v.push_back(Fault());
SetFaults(v);
//...
}
void Canvas::SetFaults(std::vector<Fault> v)
{
faults=v;
}
void Canvas::asd()
{
int u=1;
}
To copy to clipboard, switch view to plain text mode
I run this in Debug Mode with a breakpoint inside asd() so that, should the signal be emitted and received, the program simply stops at the breakpoint. This is a quick and easy method I use often.
But this time, nothing happens, telling me the signal wasn't emitted. Again, I don't have to emit the NOTIFY signal myself, do I? The macro should do that for me, right?
Bookmarks