QMetaObject::connectSlotsByName: No matching signal for on_pushButton_clicked()

因为不想总写connect,所以用了QMetaObject::connectSlotsByName的方式,但是报错。
参考 2.3信号和槽(中)
后来发现,原因是使用这种方式,必须满足几个条件:
1.假设Widget对象widget和QPushButton对象pushButton,他们必须是对象间的父子关系,即

pushButton->setParent(widget);

2.pushButton必须设置对象名

pushButton->setObjectName("pushButton");

3.在Widget头文件中必须使用slots宏

private slots:
    void on_pushButton_clicked();

你可能感兴趣的:(QMetaObject::connectSlotsByName: No matching signal for on_pushButton_clicked())