Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Qt] собственный QNetworkReply, как реализовать поделитесь опытом 
V
    Опции темы
XeS
  Дата 23.2.2010, 17:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Собственно использую QWebKit для вывода сгенерированного программой html текста, весь контент для странички содержится в zip архивах поэтому использую ссылки вида: <img src="zip://pack_12.zip/1.jpg">, т.е мне надо реализовать обработчик для таких ссылок, я переопределил 

Код

QNetworkAccessManager.createRequest (Operation, QNetworkRequest, QIODevice device = None)


Создал свой 

Код

class MyNetworkReply : public QNetworkReply


переопределил в нем все виртуальные методы от QIODevice и QNetworkReply.

Устанавливаю Header Для картинки (image/jpeg), url (zip://pack_12.zip/1.jpg), QNetworkRequest.

Возвращаю экземпляр из функции QNetworkAccessManager.createRequest.

В итоге QWebKit не чего не загружает, единственную функцию которую вызывает QWebKit  это QNetworkReply::url().


Кто нибуть переопределял класс QNetworkReply на свой, поделитесь опытом пожалуйста.
PM MAIL   Вверх
SABROG
Дата 23.2.2010, 17:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



Эту статью читал?


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
XeS
Дата 23.2.2010, 23:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Да читал, не выходит у меня этот класс переопределить. Я переопределил для теста вообще все функции класса. Кроме QNetworkReply::url(), не вызывается больше не какая функция после возвращения его из QNetworkAccessManager, я так понял по документации что нужно отправить сигнал readyRead когда класс будет готов отправить данные. Можно ли в классе как-нибудь узнать, что к сигналу readyRead привязали какой-нибудь слот?

p/s: кьют начал использовать недавно меньше месяца, многое не знаю)) пните хотябы в какую сторону копать.

Добавлено через 3 минуты и 14 секунд
Код

QNetworkReply* MyNetworkAccessManager::createRequest(Operation op, const QNetworkRequest& req, QIODevice* outgoingData)
{
    MyNetworkReply* networkReply = new MyNetworkReply(this);
    networkReply->setConfig(req.url(), op, req);

    return networkReply;
}


Код

MyNetworkReply::MyNetworkReply(QObject* parent) : QNetworkReply(parent)
{
    urlToFile(m_FilePath, m_Header, this->url().toString().toStdString());

    m_file = new QFile(m_FilePath.c_str());

    open(QIODevice::ReadOnly);

    this->setHeader(QNetworkRequest::ContentTypeHeader, QVariant(m_Header.c_str()));
    
    this->setHeader(QNetworkRequest::ContentLengthHeader, QVariant(m_file->size()));
}

MyNetworkReply::~MyNetworkReply()
{
    this->close();
}

void MyNetworkReply::abort()
{

}

void MyNetworkReply::setConfig(const QUrl& turl, QNetworkAccessManager::Operation op, const QNetworkRequest& req)
{
    this->setUrl(url);
    this->setOperation(op);
    this->setRequest(req);
}

qint64 MyNetworkReply::readData(char* data, qint64 maxSize)
{
    return m_file->read(data, maxSize);
}

qint64 MyNetworkReply::bytesAvailable() const
{
    return m_file->size();
}

bool MyNetworkReply::isSequential() const
{
    return true;
}

bool MyNetworkReply::open(OpenMode open)
{
    QIODevice::setOpenMode(open);
    return m_file->open(open);
}

PM MAIL   Вверх
XeS
Дата 28.2.2010, 18:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



up :(
PM MAIL   Вверх
SABROG
Дата 28.2.2010, 20:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



Если знаешь английский, то лучше спроси на qtcentre.org иначе на prog.org.ru
Вопрос довольно сложный, но не нерешаемый. У меня нет опыта наследования QNAM и создания собственных QNetworkReply.

Проверь вызывается ли какая-либо функция из примера qq32-webkit-protocols.zip, если да, то посмотри в чем разница.


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
IrbisDev
Дата 3.3.2010, 00:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата

Можно ли в классе как-нибудь узнать, что к сигналу readyRead привязали какой-нибудь слот?

С помощью QSignalSpy в приложении можно посмотреть, когда и какие сигналы испускает объект.
qthelp://com.trolltech.qt.460/qdoc/qsignalspy.html#details

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

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

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


 




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


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

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