Qt中没有匹配的函数调用错误

时间:2017-05-09 08:31:52

标签: c++ qt

我创建了一个类,其基类为QObject,现在,如果我尝试在代码中添加QTextBrowser,我会将错误视为没有匹配函数来调用QTextBrowser 。我尝试通过添加QWidget类来编译代码,但仍然无法解决错误。我该如何解决这个问题。

Here is the screenshot

MainWindow代码

#include <QApplication>
#include "window.h"
#include "bbbserver.h"

int main(int argc, char **argv)
{
 QApplication app (argc, argv);

 bbbServer server;
 Window window;

 window.setStyleSheet("background-color: rgb(226, 226, 226);");
 window.showFullScreen();

 return app.exec();
}

这是window.h的代码

#ifndef WINDOW_H
#define WINDOW_H

#include <QWidget>

class QPushButton;
class QTextBrowser;
class QProcess;
class QFile;

class Window : public QWidget
{
    Q_OBJECT
public:

    explicit Window(QWidget *parent = 0);
    QTextBrowser *statusWindow;


private slots:

};


#endif // WINDOW_H

这是window.cpp的代码

#include "window.h"
#include <QPushButton>
#include <QProcess>
#include <QTextBrowser>
#include <QDebug>

Window::Window(QWidget *parent) : QWidget(parent)
{
    // Create and position the buttons on the main window


  /*************** text browser *********************/
     statusWindow = new QTextBrowser(this);
     statusWindow->setMinimumSize(QSize(0,0));
     statusWindow->setMaximumSize(QSize(10000,10000));
     statusWindow->setGeometry(175, 50, 440, 420);
     statusWindow->setStyleSheet("background-color: rgb(236, 236, 236);");

} 这是bbbserver.h文件的代码

#ifndef BBBSERVER_H
#define BBBSERVER_H

#include <QObject>
#include <QWidget>
#include <QDebug>
#include <QTcpServer>
#include <QTcpSocket>

class bbbServer : public QObject
{
    Q_OBJECT
public:
    explicit bbbServer(QObject *parent = 0);

signals:

public slots:
    void newConnection();

private:
        QTcpServer *server;
};

#endif // BBBSERVER_H

这是bbbserver.cpp文件

#include "bbbserver.h"

bbbServer::bbbServer(QObject *parent):
    QObject(parent)
{


    /*************************** SERVER *********************************/
    server = new QTcpServer(this);
    connect(server, SIGNAL(newConnection()), this, SLOT(newConnection()));

    if(!server->listen(QHostAddress::QHostAddress("192.168.0.1"), 5000))
    {
        qDebug() << "SERVER NOT STARTED";
    }
    else
    {
        qDebug() << "SERVER STARTED";
    }
}

void bbbServer::newConnection()
{
    QTcpSocket *socket= server->nextPendingConnection();
    socket->write("Connection from 192.168.0.1 BBB\n");
    socket->flush();
    socket->waitForBytesWritten(30000);

    socket->waitForReadyRead(30000);
    qDebug() << socket->readAll();
`HERE I WANT TO ACCESS THE STATUS WINDOW(textbrowser statusWindow)`
}

这是完整的错误,与屏幕截图相同。

  

bbbserver.cpp:8:错误:没有匹配函数来调用'QTextBrowser :: QTextBrowser(bbbServer * const)'

1 个答案:

答案 0 :(得分:0)

传递给QTextBrowser constructorparent参数需要为QWidget *类型,而您传递QObject *。如果您确实需要bbbServer作为QTextBrowser的父对象,那么只需执行...

infoSpace = new QTextBrowser;
infoSpace->QObject::setParent(this);

注意: QObject::限定符是必需的,因为QWidget::setParent(QWidget *)有效地隐藏了其基数QObject::setParent(QObject *)成员,这意味着后者不会参与正常的查找过程