我创建了一个类,其基类为QObject
,现在,如果我尝试在代码中添加QTextBrowser
,我会将错误视为没有匹配函数来调用QTextBrowser
。我尝试通过添加QWidget
类来编译代码,但仍然无法解决错误。我该如何解决这个问题。
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)'
答案 0 :(得分:0)
传递给QTextBrowser
constructor的parent
参数需要为QWidget *
类型,而您传递QObject *
。如果您确实需要bbbServer
作为QTextBrowser
的父对象,那么只需执行...
infoSpace = new QTextBrowser;
infoSpace->QObject::setParent(this);
注意: QObject::
限定符是必需的,因为QWidget::setParent(QWidget *)
有效地隐藏了其基数QObject::setParent(QObject *)
成员,这意味着后者不会参与正常的查找过程