C2280: "QFile::QFile(const QFile &)"尝试引用已删除的函数 和 QT connect()的一些问题

本文探讨了QT中QFile类的拷贝构造函数缺失问题,并介绍了如何使用QT的connect函数连接不同参数类型的信号与槽函数。文章还详细解释了信号与槽函数在参数数量与类型上的匹配规则。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

QT的QFile已经没有拷贝构造函数啦,下面三行来自 QFile 类

private:
    friend class QTemporaryFile;
    Q_DISABLE_COPY(QFile)

意思disable掉拷贝函数,而且整个QFile类的确没有拷贝构造函数

 

今天使了一下QT的connect函数,遇到了一个问题,我MainWindow 的函数(槽函数或者信号函数) func 重载了,分别是 void func();void func(QFile,Class2); 在使用connect函数时,怎么用呢?参见这个

https://blog.youkuaiyun.com/QYCcccc/article/details/84666687

就是:1、使用static_cast<>()进行强制类型转换;2、使用QOverload<>::of()(要C++11支持)或者qOverload<>() (要C++14支持)

 

信号函数和槽函数传入的参数有无要求?有要求,见     https://www.cnblogs.com/vagabond/p/4315369.html

                                信号槽如何传递参数(或带参数的信号槽)

  利用Qt进行程序开发时,有时需要信号槽来完成参数传递。带参数的信号槽在使用时,有几点需要注意的地方,下面结合实例进行介绍。

 

 第一点:当信号与槽函数的参数数量相同时,它们参数类型要完全一致。      

signals:
    void emitdata(int);

private slots:
    void getdata(int);   // 具体实现   qDebug() << "int :   "  << a <<  agr << endl;
然后进行链接    connect(this,SIGNAL(emitdata(int)),this,SLOT(getdata(int)));
   发送信号:   emit emitdata(5) ;    
  
我们 将会收到   5  这个数字;;


第二点:当信号的参数与槽函数的参数数量不同时,。
   1、 当我们的槽参数数量多于信号数量时 将会出现  QObject::connect: Incompatible sender/receiver arguments 这个错误;
   
   2、 只能是信号的参数数量多于槽函数的参数数量,且前面相同数量的参数类型应一致,信号中多余的参数会被忽略 ;
      我们只能接受第一个参数;
signals:
    void emitdata(int,int);

private slots:
    void getdata(int);   // 具体实现   qDebug() << "int :   "  << a <<  agr << endl;
然后进行链接    connect(this,SIGNAL(emitdata(int,int)),this,SLOT(getdata(int)));
   发送信号:   emit emitdata(5,10) ;    
  
我们 只能会收到   5  这个数字;;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值