Название: QTcpSocket и QProgressBar/QProgressDialog Отправлено: nikkadim от Сентябрь 17, 2012, 23:15 Пождскажите плз, есть клиент с сервером сделанные по аналогии с примером вот здесь: http://qt-doc.ru/realizacia-klienta-s-pomoschu-klassa-qtcpsocket.html
Сервер сделан на QTcpServer и отдает данные клиенту (QTcpSocket) по некой комманде. Данные несклько сотен мегов льются долго и хочется сделать как-то QProgressBar или QProgressDialog в куотором отображать процесс передачи данных от сервера. Проблема в том что не могу понять где мне брать событие и value для обновления. Заранее благодарю. Название: Re: QTcpSocket и QProgressBar/QProgressDialog Отправлено: V1KT0P от Сентябрь 17, 2012, 23:30 Сервер сделан на QTcpServer и отдает данные клиенту (QTcpSocket) по некой комманде. Данные несклько сотен мегов льются долго и хочется сделать как-то QProgressBar или QProgressDialog в куотором отображать процесс передачи данных от сервера. Проблема в том что не могу понять где мне брать событие и value для обновления. Ты эти сотни метров сразу пихаешь в сокет или по частям? Если по частям, то между ними считай проценты и округляй до целого числа. Затем сравнивай если процент изменился, то отправляй сигнал QProgressBar-у.Название: Re: QTcpSocket и QProgressBar/QProgressDialog Отправлено: nikkadim от Сентябрь 17, 2012, 23:38 я сразу отдаю событие readyRead() в слот slotReadyRead():
Код: void MyClient::slotReadyRead() Название: Re: QTcpSocket и QProgressBar/QProgressDialog Отправлено: SimpleSunny от Сентябрь 18, 2012, 18:56 1. Вместо (int)sizeof(quint64) лучше писать (int)sizeof(m_nNextBlockSize).
2. Добавь пару своих сигналов и соедини их с соответствующими слотами, но надо понимать, что в этой реализации прогресбар будет реагировать на каждую часть. Код
Название: Re: QTcpSocket и QProgressBar/QProgressDialog Отправлено: nikkadim от Сентябрь 18, 2012, 20:15 Спасиб. Дикие задержки из-за которых хотел делать прогресс бар, оказались на стороне передающего,
По таскбару на больших данных увидел, что там оч медленно росли размеры запрошенной памяти, а потом, очень быстро все передалось по сети (cмотрел wireshark'ом) - около 180 Mbit/s. На той стороне передаю вот так: Код: qint64 RemoteGrabber::sendToClient(QTcpSocket* pSocket, const QString& str) Подскажите плз, как укорить предотправку? Преаллокировать массив? |