有点蠢的问题
其他自定义的比如widget,teacher类就需要声明

晚上好🌙🌙🌙
本答案参考ChatGPT-3.5
在定义Qpushbutton指针的时候不需要在widget.h里声明的原因是因为QPushButton是Qt的一个内置控件,已经被包含在Qt头文件中,不需要在widget.h文件中进行声明。
而自定义的类如widget和teacher等,是需要在widget.h文件中进行声明的,因为这些类是我们自己定义的,不属于Qt内置控件。
解决方案:
修改代码,只需要在widget.cpp文件中定义QPushButton指针即可,无需在widget.h文件中进行声明。正确的代码如下所示:
QPushButton *btn=new QPushButton("open",this);
此外,如果想要正确关闭窗口,需要在connect函数中使用Lambda表达式, 根据按钮文本的内容判断来进行关闭窗口的操作。可以按以下步骤:
connect(btn, &QPushButton::clicked, [this]() {
if (btn->text() == "open") {
wp->show();
btn->setText("close");
}
else if(btn->text() == "close"){
wp->close();
btn->setText("open");
}
});