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

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日

悬赏问题

  • ¥15 请问Ubuntu要怎么安装chrome呀?
  • ¥15 视频编码 十六进制问题
  • ¥15 Xsheii7我安装这个文件的时候跳出来另一个文件已锁定文件的无一部分进程无法访问。这个该怎么解决
  • ¥15 unity terrain打包后地形错位,跟建筑不在同一个位置,怎么办
  • ¥15 FileNotFoundError 解决方案
  • ¥15 uniapp实现如下图的图表功能
  • ¥15 u-subsection如何修改相邻两个节点样式
  • ¥30 vs2010开发 WFP(windows filtering platform)
  • ¥15 服务端控制goose报文控制块的发布问题
  • ¥15 学习指导与未来导向啊