我有兩個類。爲了簡單起見,我會稱它們爲A級和B級。我希望使用Qt Signals and Slots進行鏈接,當類A
的函數setXPos()
或setYPos()
被調用到類B
時,它在特定位置上顯示圖像以便圖像cna移動到正確的座標。這裏是我的代碼:Qt將信號連接到插槽
class A: public QObject
{
Q_OBJECT
public:
A();
void setXPos(int newPos) {xPos = newPos; emit posChanged(xPos, yPos);};
void setYPos(int newPos) {yPos = newPos; emit posChanged(xPos, yPos);};
signals:
void posChanged(int x, int y);
private:
int xPos;
int yPos;
};
class B : public QObject
{
Q_OBJECT
public:
B(std::shared_ptr<A> classA);
void changePos(int x, int y);
public slots:
void posChanged(int x, int y);
private:
QPixmap image;
std::shared_ptr<A> classA;
};
所以在我B
對象我想趕上posChanged()
的EMIT中A
類。您可以在B
的構造函數中看到指向A
的指針,該指針存儲在類B
中。因此,在構造函數中我想做的事:
B::B(std::shared_ptr<A> classA) : classA(classA)
{
QObject::connect(classA, SIGNAL(posChanged(int x, int y)), *this, SLOT(posChanged(int x, int y)));
}
但有我我connect
內部通話不匹配功能這給了錯誤。
這真的有用嗎?當shared_ptr沒有計算這個對象的任何引用時,不會獲取由classA.get()返回的對象嗎? – Soccertrash 2017-07-26 19:01:33