要注意信号的发起者需要有地址,那么如果刚开始仅仅声明一个指针,并没有创造对象,那么就是一个空指针,程序会异常退出。
例如
class MainWidget : public QWidget
{
Q_OBJECT
public:
MainWidget(QWidget *parent = nullptr);
~MainWidget();
void myslot();
void changeWindow();
void dealsignal();
private:
QPushButton b1;
QPushButton *b2;
QPushButton *b3;
SubWidget *w;
};
在MainWidget的实现中直接链接信号和槽函数,并没有对subwidget进行分配内存空间:
connect(w, &SubWidget::mySignal, this , &MainWidget::dealsignal);
会导致程序异常结束。