Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/128.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 不调用Qt信号插槽_C++_Qt_Qt5_Signals Slots_Qnetworkaccessmanager - Fatal编程技术网

C++ 不调用Qt信号插槽

C++ 不调用Qt信号插槽,c++,qt,qt5,signals-slots,qnetworkaccessmanager,C++,Qt,Qt5,Signals Slots,Qnetworkaccessmanager,我遇到了信号和插槽的问题,当我从主函数调用test()函数时,信号和插槽不工作(它们不调用),但当我在主函数中直接从test()调用代码时,信号和插槽正在调用!我做错了什么? 第二个问题,有没有办法回覆?我需要在第页找到一些东西 main.cpp void test() { httpManager manager; manager.sendRequest("http://google.com/"); } int main(int argc, char *argv[]) {

我遇到了信号和插槽的问题,当我从主函数调用test()函数时,信号和插槽不工作(它们不调用),但当我在主函数中直接从test()调用代码时,信号和插槽正在调用!我做错了什么? 第二个问题,有没有办法回覆?我需要在第页找到一些东西

main.cpp

void test()
{
    httpManager manager;
    manager.sendRequest("http://google.com/");
}

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MfzBot w;
    w.show();
    test();

    return a.exec();
}
working main.cpp:

void test()
{
    httpManager manager;
    manager.sendRequest("http://google.com/");
}

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MfzBot w;
    w.show();

    httpManager manager;
    manager.sendRequest("http://google.com/");

    return a.exec();
}
httpmanager.cpp:

httpManager::httpManager()
{
    QObject::connect(manager, SIGNAL(finished(QNetworkReply*)),
               this, SLOT(replyFinished(QNetworkReply*)));
}

QNetworkCookieJar cookies;

void httpManager::sendRequest(const char* url)
{
    QNetworkProxyFactory::setUseSystemConfiguration (true);

    QByteArray outArray;
    QDataStream stream(&outArray, QIODevice::WriteOnly);

    manager->setCookieJar(cookies);

    QNetworkRequest request(QUrl(url));

    manager->post(request, outArray);
}

void httpManager::replyFinished(QNetworkReply *reply)
{
    qDebug() << "ok! ";
    qDebug() << reply->readAll();
}

第一个代码的问题是,在调用函数“test()”后在堆栈上创建了类型为“httpManager”的对象“manager”,并在test()返回时分别销毁。因此,当“test()”返回并且信号和插槽不工作时,没有“manager”对象。而在后一个代码中,“管理器”一直存在,直到应用程序终止。

第一个代码的问题是,具有“httpManager”类型的对象“管理器”在调用函数“test()”后在堆栈上创建,并在test()返回时分别被销毁。因此,当“test()”返回并且信号和插槽不工作时,没有“manager”对象。而在后一个代码中,“管理器”一直存在,直到应用程序终止。

第一个代码的问题是,具有“httpManager”类型的对象“管理器”在调用函数“test()”后在堆栈上创建,并在test()返回时分别被销毁。因此,当“test()”返回并且信号和插槽不工作时,没有“manager”对象。而在后一个代码中,“管理器”一直存在,直到应用程序终止。

第一个代码的问题是,具有“httpManager”类型的对象“管理器”在调用函数“test()”后在堆栈上创建,并在test()返回时分别被销毁。因此,当“test()”返回并且信号和插槽不工作时,没有“manager”对象。而在后一个代码中,“管理器”一直存在,直到应用程序终止。

您的对象“管理器”在test()函数完成后立即被销毁。要避免这种情况,请尝试动态创建对象:

httpManager *manager;

void test()
{
    manager = new httpManager();
    manager->sendRequest("http://google.com/");
}
请注意,“httpManager*manager”不属于任何函数

现在,您的“管理器”对象位于内存中的某个位置(称为heap),并且在test()函数退出时不会被销毁。 注意,这个方法不太好,因为“manager”现在是全局变量,这在面向对象编程中不是一个好方法,但第一次它并不重要。

您的对象“manager”在test()函数完成后立即被销毁。要避免这种情况,请尝试动态创建对象:

httpManager *manager;

void test()
{
    manager = new httpManager();
    manager->sendRequest("http://google.com/");
}
请注意,“httpManager*manager”不属于任何函数

现在,您的“管理器”对象位于内存中的某个位置(称为heap),并且在test()函数退出时不会被销毁。 注意,这个方法不太好,因为“manager”现在是全局变量,这在面向对象编程中不是一个好方法,但第一次它并不重要。

您的对象“manager”在test()函数完成后立即被销毁。要避免这种情况,请尝试动态创建对象:

httpManager *manager;

void test()
{
    manager = new httpManager();
    manager->sendRequest("http://google.com/");
}
请注意,“httpManager*manager”不属于任何函数

现在,您的“管理器”对象位于内存中的某个位置(称为heap),并且在test()函数退出时不会被销毁。 注意,这个方法不太好,因为“manager”现在是全局变量,这在面向对象编程中不是一个好方法,但第一次它并不重要。

您的对象“manager”在test()函数完成后立即被销毁。要避免这种情况,请尝试动态创建对象:

httpManager *manager;

void test()
{
    manager = new httpManager();
    manager->sendRequest("http://google.com/");
}
请注意,“httpManager*manager”不属于任何函数

现在,您的“管理器”对象位于内存中的某个位置(称为heap),并且在test()函数退出时不会被销毁。
注意,这种方法不太好,因为“manager”现在是全局变量,这在面向对象编程中不是一个好方法,但第一次它并不重要。

你所说的“有任何方法返回响应”是什么意思。因为在您的插槽replyFinished中,reply指针就是响应。另外,您可能希望通过以下步骤:不要忘记处理错误。您所说的“有任何方法返回响应”是什么意思。因为在您的插槽replyFinished中,reply指针就是响应。另外,您可能希望通过以下步骤:不要忘记处理错误。您所说的“有任何方法返回响应”是什么意思。因为在您的插槽replyFinished中,reply指针就是响应。另外,您可能希望通过以下步骤:不要忘记处理错误。您所说的“有任何方法返回响应”是什么意思。因为在您的插槽replyFinished中,reply指针就是响应。另外,您可能希望完成以下操作:不要忘记处理错误。