Здраствуйте. Пишу клиент-серверный чат на Qt. Сервер берет с базы данных данные об юзере, его пароль и ник. Когда пользователь ввел в окно свои данные, сервер ищет юзера в БД, и отсылает сообщение клиенту "User is exists", если юзер уже существует. У клиента есть метод sockReady().
void LoginRegister::sockReady()
{
Data = socket->readAll();
QString text = QString(Data);
qDebug()<<"from loginregister "<<text;
if(text=="User is exists")
{
ui->lineEditMessage->setText("User is exists");
}
}
Здесь просто на консоле отображает сообщение и в соотвествуещем lineEdit меняет текст. Этот lineEdit предназначен для вывода ошибки, как вот если такой юзер уже зарегестрирован.
Когда я ввела данные и нажимаю на кнопку REGISTER выполняеться данный код
if(isValidName(user.getName()) && isValidPassword(user.getPassword())==-1)
{
//auto win = new firstwindow(this, 1);
if(openForAction==2)//если была нажата кнопка регистрации
{
this->socket->write(QString("reg "+user.getName()+" "+user.getPassword()).toUtf8());
if(ui->lineEditMessage->text()=="User is exists")
qDebug()<<"USER IS EXISTS VXOD NEVOZMOZHEN";
}
else if(openForAction==1)
{
this->socket->write(QString("log "+user.getName()+" "+user.getPassword()).toUtf8());
}
//win->setAttribute( Qt::WA_DeleteOnClose);
//win->show();
//this->hide();
}
Здесь сокет клиента отсылает данные о том что это реестрация, сервер обрабатывает эти данные, и по логике в методе sockReady обрабатываются данные полученные с сервера. И далее я просто проверяю, текст в моем lineEdit "User is exists" ? Да. (потому что ввожу уже существующего юзера, для наглядности примера). Но это условие не выполняеться с первого раза. Когда я нажимаю второй раз на кнопку Register, оно уже заходит в мое условие, и отображает "USER IS EXISTS VXOD NEVOZMOZHEN". Я не понимаю, почему только со второго раза это делается?
Помогите пожалуйста, скоро дедлайн, а я уже 3-й день над этой ошибкой сижу. Заранее спасибо!