在用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()信号


时间比较紧,可以追加分

Widgetshare::connect 改 QObject::connect追问

我用的就是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已是指针,不用加&

参考技术A QObject::connect(&tcpServer,SIGNAL(newConnection()),this,SLOT(acceptConnection()));
你确定 这个函数是静态函数吗?追问

刚学,不太懂静态函数什么的,能说一下怎么解决吗?

追答

楼上说的真确,函数参数不匹配,你将&取掉就好了

以上是关于在用QT编程时,建了一个自己的类,但是编译时出现错误,求教大侠们如何解决的主要内容,如果未能解决你的问题,请参考以下文章

Android编译时动态替换Jar包中的类

QT程序在发布的时候应注意的地方

构建 Qt 时出现编译器错误

为啥在 Qt 中继承 QWidget 类时出现内存泄漏

关于在vs2010中编译Qt项目时出现“无法解析的外部命令”的错误

尝试显示窗口时出现 Qt 错误分段错误