Radzhab
@Radzhab

Запуск отдельного потока QT?

Сделал get-запрос на сайт в отдельном потоке. Но форма на несколько секунд фризится. Да и совсем непонятно почему так долго идет запрос. Простой гет-запрос для c# может занять 2-3 секунды. Тут же почти 10 секунд уходит на запрос

ссылка на github https://github.com/Radzhab/QTparser
#ifndef THREAD_H
#define THREAD_H
#include <QThread>
#include <QTextEdit>
#include <httphelper.h>
class Worker : public QObject
{
    Q_OBJECT
    QThread workerThread;
    HttpHelper *helper;

public slots:
    void doWork(const QString &result) {

        emit resultReady(helper->GetHtml());
    }

signals:
    void resultReady(const QString &result);
};

class Controller : public QObject
{
    Q_OBJECT
    QThread workerThread;
    QTextEdit *textDesk;


public:
    Controller(QTextEdit *txt): textDesk(txt) {
        Worker *worker = new Worker;
        worker->moveToThread(&workerThread);
        connect(&workerThread, SIGNAL(finished()), worker, SLOT(deleteLater()));
        connect(this, SIGNAL(operate(QString)), worker, SLOT(doWork(QString)));
        connect(worker, SIGNAL(resultReady(QString)), this, SLOT(handleResults(QString)));
        workerThread.start();
    }
    ~Controller() {
        workerThread.quit();
        workerThread.wait();
    }
public slots:
    void handleResults(const QString &str)
    {
        textDesk->append(str);
    }
signals:
    void operate(const QString &);
};

#endif // THREAD_H
  • Вопрос задан
  • 355 просмотров
Пригласить эксперта
Ответы на вопрос 1
@MrBlastark
Возможно нужно использовать QThread *workerThread = new QThread(); Затем естественно убрать & в workerThread и заменить . на ->
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы