Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вопрос по QHttp... и QWebView 
:(
    Опции темы
shutffl
Дата 18.8.2008, 13:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 171
Регистрация: 18.8.2008

Репутация: нет
Всего: 3



Пишу бота для online игры. Застрял на работе с QWebView и QHttp. Подскажите, как можно, например, отправить запрос на yandex.ru и увидеть ответ в QWebView.

.h:
Код

#ifndef SHPONJA_H
#define SHPONJA_H

#include <QtGui/QMainWindow>
#include <QWebView>
#include <QHBoxLayout>
#include <QVBoxLayout>
#include <QPushButton>
#include <QHttp>
#include <QUrl>
#include <QMessageBox>
#include <QProgressBar>
#include "ui_shponja.h"

class shponja : public QMainWindow
{
    Q_OBJECT

public:
    shponja(QWidget *parent = 0);
    ~shponja();

private slots:
    void openPage();
    void openPage(QString url);
    void httpRequestFinished(int id, bool error);
    void httpRequestStarted(int id);
    void httpRequestDone(bool error);

private:
    Ui::shponjaClass ui;

    QHBoxLayout *hLayout;
    QVBoxLayout *vLayout;
    QWebView *webView;
    QPushButton *btnLogin;
    QHttp *http;
    QByteArray data;
    QProgressBar *progress;
};

#endif // SHPONJA_H


.cpp:
Код

#include "shponja.h"

shponja::shponja(QWidget *parent)
: QMainWindow(parent)
{
    ui.setupUi(this);

    webView = new QWebView;
    hLayout = new QHBoxLayout;
    vLayout = new QVBoxLayout;
    btnLogin = new QPushButton("Login");
    progress = new QProgressBar;

    hLayout->addWidget(btnLogin, 0, Qt::AlignRight);
    hLayout->addWidget(progress, 1, Qt::AlignRight);

    vLayout->addLayout(hLayout);
    vLayout->addWidget(webView);

    ui.centralwidget->setLayout(vLayout);

    http = new QHttp;

    webView->page()->setLinkDelegationPolicy(QWebPage::DelegateAllLinks);
    //webView->setUrl(QUrl("http://ya.ru"));

    connect(btnLogin, SIGNAL(clicked()), this, SLOT(openPage()));
    connect(webView,SIGNAL(loadProgressChanged(int)),progress,SLOT(setValue(int)));
    connect(http, SIGNAL(done(bool)),this, SLOT(httpRequestDone(bool)));
    connect(http, SIGNAL(requestFinished(int, bool)),this, SLOT(httpRequestFinished(int, bool)));
    connect(http, SIGNAL(requestStarted(int)),this, SLOT(httpRequestStarted(int)));
}

shponja::~shponja()
{

}

void shponja::openPage(QString url)
{
    webView->setUrl(QUrl(url));
}

void shponja::openPage()
{
    http = new QHttp;

    QHttpRequestHeader header("GET", "/yandsearch");

    header.setValue("Host", "yandex.ru");
    header.setContentType("application/x-www-form-urlencoded");
    http->setHost("yandex.ru");
    QString s = "text=hjkj";
    http->request(header, s.toUtf8());
}

void shponja::httpRequestStarted(int id)
{
    setWindowTitle("Start");
}

void shponja::httpRequestFinished(int id, bool error)
{
    setWindowTitle("End");
}

void shponja::httpRequestDone(bool error)
{
    if(error)
    {
        QMessageBox::information(this, "22", http->error() + "\n" + http->errorString(), QMessageBox::Ok);
    }
    else
    {
        data = http->readAll();
        QMessageBox::information(this, "11", data, QMessageBox::Ok);
        webView->setHtml(data);
    }
}


В самой игрушке нужен POST, но, думаю, замена GET на  POST будет работать...

httpRequestFinished и httpRequestStarted - не срабатывают.
--------------------
shadowmoon
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.0405 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.