16,212
社区成员
发帖
与我相关
我的任务
分享
如果 B类是A类的一个对象,不管是B发送信号触发A还是A发送信号触发B 失败的原因主要有以下两点: 1.信号和槽函数不匹配 2.connect连接写的位置不对(connect应该写在A类中,写在B类中则无法触发)
我想问下你的信号是在哪个类里面emit的?
[quote=引用 15 楼 u011330815 的回复:] 如果 B类是A类的一个对象,不管是B发送信号触发A还是A发送信号触发B 失败的原因主要有以下两点: 1.信号和槽函数不匹配 2.connect连接写的位置不对(connect应该写在A类中,写在B类中则无法触发)
你这个celEntered应该是个slot函数,你在那里定义的啊。
你把code贴出来吧。从你这里看没什么问题。 另:你的TableWidget继承的那个类??里面有cellEntered??? 不知道signal能否virtual,控制台提示你把cellEntered重复定义了。。
TableWidget中没见cellEntered,只在你的类定义中见了rowEntered么。。
#ifndef TABLEWIDGET_H
#define TABLEWIDGET_H
#include <QTableWidget>
#include <QDebug>
#include <QMouseEvent>
class TableWidget : public QTableWidget
{
Q_OBJECT
public:
explicit TableWidget(QWidget *parent = 0);
~TableWidget();
protected:
void mouseMoveEvent(QMouseEvent *event);
void leaveEvent(QEvent *event);
private:
int row = -1;
signals:
void rowEntered(int row);
void cellEntered(int row,int column);
};
#endif // TABLEWIDGET_H
而且连接的时候控制台提示
QMetaObject::indexOfSignal: signal cellEntered(int,int) from QTableWidget redefined in TableWidget