在用QT编程时,建了一个自己的类,但是编译时出现错误,求教大侠们如何解决
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在用QT编程时,建了一个自己的类,但是编译时出现错误,求教大侠们如何解决相关的知识,希望对你有一定的参考价值。
错误提示为widgetshare.cpp:12: error: no matching function for call to 'Widgetshare::connect(QTcpServer**, const char*, Widgetshare* const, const char*)',其中Widgetshare是我自己的类,类定义为//#ifndef WIDGETSHARE_H
#define WIDGETSHARE_H
#include <QtNetWork>
#include <QWidget>
#include <QTcpServer>
#include <QObject>
namespace Ui
class Widget;
class Widgetshare : public QWidget
Q_OBJECT
public:
explicit Widgetshare(QWidget *parent = 0);
~Widgetshare();
private:
Ui::Widget *ui;
QTcpServer *tcpServer;
QTcpSocket *tcpServerConnection;
qint64 totalBytes; //存放总大小信息
qint64 bytesReceived; //已收到数据的大小
qint64 fileNameSize; //文件名的大小信息
QString fileName; //存放文件名
QFile *localFile; //本地文件
QByteArray inBlock; //数据缓冲区
private slots:
void on_startButton_clicked();
void start(); //开始监听
void acceptConnection(); //建立连接
void updateServerProgress(); //更新进度条,接收数据
void displayError(QAbstractSocket::SocketError socketError);
//显示错误
;
//#endif
WIDGETSHARE_H,出错的程序文件为
#include "widgetshare.h"
#include "ui_widgetshare.h"
#include <QObject>
Widgetshare::Widgetshare(QWidget *parent):
QWidget(parent),
ui(new Ui::Widget)
totalBytes = 0;
bytesReceived = 0;
fileNameSize = 0;
QObject::connect(&tcpServer,SIGNAL(newConnection()),this,SLOT(acceptConnection()));
//当发现新连接时发出newConnection()信号
时间比较紧,可以追加分
我用的就是QObject::connect 啊,不好使
追答widgetshare.cpp:12: error: no matching function for call to
'Widgetshare::connect(QTcpServer**, const char*, Widgetshare* const, const char*)'
你没贴这部分出来吧
connect只有QObject::connect这个用法,有什么好不好使的
上面的代码是分两部分的,下半部分的 QObject::connect(&tcpServer,SIGNAL(newConnection()),this,SLOT(acceptConnection()));
//当发现新连接时发出newConnection()信号
就是出错的代码,我用的是的QObject::connect,可是还是报那个错
QObject::connect(tcpServer,SIGNAL(newConnection()),this,SLOT(acceptConnection()));
tcpServer已是指针,不用加&
你确定 这个函数是静态函数吗?追问
刚学,不太懂静态函数什么的,能说一下怎么解决吗?
追答楼上说的真确,函数参数不匹配,你将&取掉就好了
以上是关于在用QT编程时,建了一个自己的类,但是编译时出现错误,求教大侠们如何解决的主要内容,如果未能解决你的问题,请参考以下文章