Russian Qt Forum

Qt => Установка, сборка, отладка, тестирование => Тема начата: RedDog от Август 24, 2010, 09:15



Название: Segmentation fault при соединении сигнала со слотом
Отправлено: RedDog от Август 24, 2010, 09:15
Добрый день.
Не пойму в чем может быть причина:

Код:
class CSocketLogin : public QObject
{
    Q_OBJECT
public:
    CSocketLogin();
    void sendData(QString &input);
    void connect();
private:
    QSslSocket *socket;
    QString m_answer;
private slots:
    void socketStateChanged(QAbstractSocket::SocketState state);
    void socketEncrypted();
    void sslErrors(const QList<QSslError> &errors);
public slots:
    void socketReadyRead();
};

Код:

CSocketLogin::CSocketLogin()
{
    if (!socket)
        socket = new QSslSocket(0);
}

void CSocketLogin::connect()
{
    QObject::connect(socket, SIGNAL(stateChanged(QAbstractSocket::SocketState)),
                this, SLOT(socketStateChanged(QAbstractSocket::SocketState)));
    QObject::connect(socket, SIGNAL(encrypted()),
            this, SLOT(socketEncrypted()));
    QObject::connect(socket, SIGNAL(sslErrors(QList<QSslError>)),
            this, SLOT(sslErrors(QList<QSslError>)));
    QObject::connect(socket, SIGNAL(readyRead()),
            this, SLOT(socketReadyRead()));
    socket->connectToHostEncrypted("login.live.com", 443);
}
в при соединении сигнала со слотом вываливается SF
Что не так?


Название: Re: Segmentation fault при соединении сигнала со слотом
Отправлено: RedDog от Август 24, 2010, 09:40
Ответ:
здесь:
Код:
CSocketLogin::CSocketLogin()
{
    if (!socket)
        socket = new QSslSocket(0);
}
не срабатывало условие, посему объект не создавался


Название: Re: Segmentation fault при соединении сигнала со слотом
Отправлено: SASA от Август 24, 2010, 09:52
Пользуйтесь QPointer !!!