我想知道如何从主要()函数中的 SocketTest 类调用 Do_Download()函数。 第一个 cTest.Do_Download()确实有效,但是当我调用 test()函数时, csTest.Do_Download()不起作用
所以看起来我只能从 main()函数中访问 SocketTest ,而不是从任何其他函数访问。
有人知道如何解决这个问题吗? 谢谢!
main.cpp中:
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
SocketTest cTest;
cTest.Do_Download();
return a.exec();
}
void test()
{
qDebug() << "test main functie";
SocketTest csTest;
csTest.Do_Download();
}
SocketTest.h:
#ifndef SOCKETTEST_H
#define SOCKETTEST_H
#include <QObject>
#include <QTcpSocket>
#include <QDebug>
#include <QHttp>
#include <QFile>
#include <QString>
class SocketTest : public QObject
{
Q_OBJECT
public:
explicit SocketTest(QObject *parent = 0);
void Do_Download();
signals:
public slots:
void stateChanged ( int state );
void responseHeaderReceived ( const QHttpResponseHeader & resp );
void requestFinished ( int id, bool error );
private:
QTcpSocket *socket;
QHttp *http;
QHttp *http2;
};
#endif // SOCKETTEST_H
答案 0 :(得分:3)
如果您的DoDownload
函数异步执行任何操作(可能在处理Qt网络类时),那么您在SocketTest
中创建的test()
在它可以执行操作之前就会被销毁任何回报值。
它适用于main()
,因为事件循环开始且SocketTest
实例挂起。