Back2zer0 2022-05-19 15:48 采纳率: 100%
浏览 76
已结题

QT中,connect 关键字 在窗口类头文件里使用时 发生报错

问题遇到的现象和发生背景
#include <QPushButton>
#include <QWidget>
#include "student.h"
#include "teacher.h"
class mywidget : public QWidget
{
    Q_OBJECT

public:
    student* st = new student(this);
    teacher* wt = new teacher(this);
    QPushButton *wtb1 = new QPushButton("无参",this);
    QPushButton *wtb2 = new QPushButton("有参",this);
    void(student::*Nopartreat)()=&student::treat;
    void(teacher::*Noparhungry)()=&teacher::hungry;
    void(student::*partreat)(QString,int)=&student::treat;
    void(teacher::*parhungry)(QString,int)=&teacher::hungry;
  //  connect(wt,Noparhungry,st,Nopartreat);
  //  connect(wt,parhungry,st,partreat);
  //  connect(wtb1,&QPushButton::clicked,wt,Noparhungry);
   // connect(wtb2,&QPushButton::clicked,this,&mywidget::classisover);

    void classisover();  //classisover() 是信号触发的函数
    mywidget(QWidget *parent = 0);
    ~mywidget();
};
 
报错提示

这四个connect是不合法的。
connect本身,connect的 前三个参数的报错提示:error: C++ requires a type specifier for all declarations
第四个参数的报错提示:error: unknown type name 'Noparhungry'

尝试思路

只能把connect 语句 放在头文件对应的 cpp源文件里。

#include "mywidget.h"
mywidget::mywidget(QWidget *parent)
    : QWidget(parent)
{
    connect(wt,Noparhungry,st,Nopartreat);
    connect(wt,parhungry,st,partreat);
    connect(wtb1,&QPushButton::clicked,wt,Noparhungry);
    connect(wtb2,&QPushButton::clicked,this,&mywidget::classisover);
    wtb2->move(100,100);
}


我想要达到的结果

我想当然的认为,头文件和源文件里写 connect语句,不都是在mywidget这个窗口类的作用域里吗?
为什么会出现这种现象?
(头文件中除了connect语句,许多初始化工作 像函数指针绑定、按钮类的new等在源文件/头文件皆可。)
难道跟头文件有关?

  • 写回答

1条回答 默认 最新

  • 赵4老师 2022-05-19 16:58
    关注

    百度搜“c++ 头文件中和源文件中 区别”

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 6月3日
  • 已采纳回答 5月26日
  • 创建了问题 5月19日

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!