Russian Qt Forum
Ноябрь 24, 2024, 11:01 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Снова сигнал-слот  (Прочитано 2978 раз)
crocus
Гость
« : Март 26, 2007, 09:36 »

Из \examples\dialogs взял configdialog, добавил в pages еще один pagesWidget
Код:
AgentsPage::AgentsPage(QWidget *parent)
: QWidget(parent)
{
QGroupBox *packagesGroup = new QGroupBox(tr("Agents"));
agents_w = new Agents(this);
 
со своим классом
Код:
#include "network.h"
.......
class Agents : public QWidget
, работающим с базой и сетью, и при вызове слота в сетевом классе
Код:
network_s = new Network(this);
connect( this, SIGNAL( ready_Agent(QString &, QString &, QString &) ), network_s, SLOT( send_Agent(QString &, QString &, QString &) ) );
//// где- то ниже при нажатии на кнопку
emit ready_Agent( agent_name_str, agent_mail_str, agency_str);

вываливается с ошибкой.
Цитировать
First-chance exception at 0x77e4bee7 in realtorplus.exe: Microsoft C++ exception: [rethrow] @ 0x00000000.
Unhandled exception at 0x00968c57 in realtorplus.exe: 0xC0000005: Access violation reading location 0x0000001c.



Может по описанию ошибки кто скажет где накосячил??
Записан
Tonal
Гость
« Ответ #1 : Март 26, 2007, 19:58 »

Забыл инициализировать какую-то переменную или член.
Записан
crocus
Гость
« Ответ #2 : Март 27, 2007, 10:48 »

Ерунда какая-то - вылетает, когда передаются параметры, если вызываю любой другой слот (без параметров) например
 
Код:
connect( agents_w, SIGNAL( ready_Agent(QString, QString, QString) ), network_a, SLOT( updatePaper() ) );
- коннект проходит, для проверки  
дописывал
Код:
send_Agent("2", "2", "2")
 в "updatePaper()" - отрабатывает.

Нашел где падает:
Код:

void Network::send_Agent(QString &agent_n, QString &agent_m, QString &agency_c)
{
QString md5_str = genRandomMD5();
//////////////////////////////////////////////////////////////////////////
QHttpRequestHeader header( "POST", "/agent_ready.php", 1, 1 );
header.setValue( "Host", "foliant" );
header.setValue( "Content-type", "multipart/form-data, boundary=" + md5_str + "" );
header.setValue( "Cache-Control", "no-cache" );
header.setValue( "Accept", "*/*" );
QByteArray bytes;
bytes.append( "--" + md5_str + "\r\n" );
bytes.append( "content-disposition: " );
bytes.append( "form-data; name=\"agency\"\r\n" );
bytes.append( "\r\n" );
bytes.append( "" + agency_c + "\r\n" );
bytes.append( "--" + md5_str + "\r\n" );
bytes.append( "content-disposition: " );
bytes.append( "form-data; name=\"name\"\r\n" );
bytes.append( "\r\n" );
bytes.append( "" + agent_n + "\r\n" );
bytes.append( "--" + md5_str + "\r\n" );
bytes.append( "content-disposition: " );
bytes.append( "form-data; name=\"mail\"\r\n" );
bytes.append( "\r\n" );
bytes.append( "" + agent_m + "\r\n" );
bytes.append( "--" + md5_str + "--" );
int contentLength = bytes.length();
header.setContentLength( contentLength );
httpRequestAborted = false;
QMessageBox::information( this, tr( "Network module" ),
tr( "A query to the server is not executed : %1, %2 , %3, %4." )
.arg( agent_n, agent_m, agency_c, md5_str)); /// убедился,что параметры и хэш в порядке
httpGetId = http->request( header, bytes ); /// ВОТ ЗДЕСЬ И ПАДАЕТ!!!
//http->request( header, bytes );
}


Работа  с сетью практически полностью из /examples/network/http

добавлено спустя 8 часов 8 минут:

 Нашел --- все косяки из-за отсутствия
Код:
http->setHost(........... );
, хотя в хедере  
Код:
header.setValue( "Host", ......... );
присутствует и "file"
Код:
void HttpWindow::httpRequestFinished(int requestId, bool error)
{
   ..............................................

    if (requestId != httpGetId)
        return;

    progressDialog->hide();
    file->close(); // здесь!!!

    if (error) {
        file->remove(); /// и здесь
 ...............................................
}
, т.е. при отсутствии "setHost" попадало на "file->remove();" и вылетало, а после правки стало вылетать на "file->close();", пока в конструкторе не прописал file = new QFile.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.152 секунд. Запросов: 20.