Dzień dobry,
w klasie cWorker stworzono wskaźnik na obiekt klasy cSingIn. Kiedy użytkownik wejdzie w "Zaloguj się" i poprawnie wypełni dane logowania wraca na stronę główną aplikacji, gdzie może wypożyczyć książkę. Tutaj jest problem, ponieważ instrukcja warunkowa if(_cSignIn->get_signed()) sprawdzająca czy użytkownik jest zalogowany nie przepuszcza dalej działania programu, mimo, iż w poprzednim okienku użytkownik zalogował się i zmienił wartość zmiennej _signed na true. Wskaźnik na obiekt klasy cSignIn ma cały czas wartości zadeklarowane przed konstruktor domyślny. Stąd pytanie, w jaki sposób powinienem przesłać do klasy cWorker dane klasy cSignIn, aby w razie zalogowania można obsłużyć użytkownika?
Pozdrawiam
cSignIn::cSignIn(QWidget *parent) :
QDialog(parent),
ui(new Ui::cSignIn)
{
ui->setupUi(this);
_db.setHostName("localhost");
_db.setDatabaseName("biblioteka");
_db.setUserName("root");
_db.setPassword("");
connect(this->ui->pushButton,SIGNAL(clicked(bool)),this,SLOT(onOk()));
connect(this->ui->pushButton_cancel,SIGNAL(clicked(bool)),this,SLOT(onCancel()));
_signed = 0;
idStudent = 0;
}
void cSignIn::onOk() //po kliknieciu buttona "OK"
{
if (!_db.open())
{
QMessageBox msgBox;
msgBox.setText("Błąd: nie można się połączyć z bazą!");
msgBox.exec();
}
else
{
QSqlQuery query;
query.exec("SELECT * FROM uzytkownicy");
while (query.next())
{
if(ui->lineEdit_UserName->text() == query.value(1).toString() && ui->lineEdit_Password->text() == query.value(2).toString())
{
_signed = 1;
idStudent = query.value(0).toInt();
qDebug()<<"idStudent: "<<idStudent;
}
}
_db.close();
if (_signed == 0)
{
QMessageBox msgBox;
msgBox.setText("Zły login lub hasło");
msgBox.exec();
}
else
{
close();
}
}
}
cWorker::cWorker(): _cSignIn (new cSignIn)
{
db.setHostName("localhost");
db.setDatabaseName("biblioteka");
db.setUserName("root");
db.setPassword("");
}
void cWorker::rent(QString id) //wypozycz
{
if(_cSignIn->get_signed())
{
if (!db.open())
{
QMessageBox msgBox;
msgBox.setText("Błąd: nie można się połączyć z bazą!");
msgBox.exec();
}
else
{
QSqlQuery query;
query.exec("UPDATE ksiazki SET StatusWypozyczenia = 1 WHERE id =" +id+""); //QString::number(_id)
// pobieranie.prepare("DELETE FROM ksiazki WHERE id = "+QString::number(_id)+"");
// pobieranie.bindValue("id", 1);
// pobieranie.exec(); SLUZY DO USUWANIA KSIAZKI Z BAZY DANYCH
QSqlQuery query2;
qDebug()<<_cSignIn->idStudent;
query2.exec("INSERT INTO Wypozyczenia (idUcznia, idKsiazki) VALUES ("+QString::number(_cSignIn->idStudent)+","+id+" )");
qDebug()<<_cSignIn->idStudent;
db.close();
}
}
else
{
QMessageBox msgBox;
msgBox.setText("Zaloguj się!");
msgBox.exec();
}
}