Dzień dobry. Mam problem z przekazaniem wartości z mainwindow do nowo utworzonego registerwindow. W swoim programie chce dodać możliwość rejestracji nowego użytkownika w bazie danych. Dlatego chce przekazać konkretne wartości do nowego okna. Wiem, że powinno być to robione sygnałami, ale nie bardzo chce to działać w moim programie.
W pliku nagłówkowym głównego okna dodałem sygnał:
MainWindow.h
signals:
void GetDatabaseObject(Database&);
private slots:
void on_loginButton_pressed();
void on_registerButton_pressed();
Który jest emitowany podczas użycia przycisku "Register Button":
MainWindow.cpp
void MainWindow::on_registerButton_pressed()
{
if(registerWindow != 0)
{
registerWindow->show();
}
emit GetDatabaseObject(dataBase);
}
w pliku nagłówkowym drugiego okna dodałem slot:
RegisterWindow.h
public slots:
void on_registerWorkerContinueButton_pressed();
void on_registerWorkerCancelButton_pressed();
void SetDatabase(Database&);
Którego definicja wygląda następująco:
RegisterWindow.cpp
void RegisterWindow::SetDatabase(Database &value)
{
dataBase = value;
if(dataBase.GetConnectionStatus())
{
ui->registerWorkerClassDescriptionLabel->setText("Przekazano wlasciwy obietk!");
}
else
{
ui->registerWorkerClassDescriptionLabel->setText("Przekazano nie ten obiekt! Inna wersja obiektu!");
}
}
na sam koniec w pliku main.cpp dodałem:
main.cpp
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow mainWindow;
mainWindow.resize(1920,1080);
mainWindow.move(0,0);
mainWindow.show();
RegisterWindow registerWindow;
QObject::connect(&mainWindow,SIGNAL(GetDatabaseObject(Database&)),®isterWindow,SLOT(SetDatabase(Database&)));
return a.exec();
}
Po przetestowaniu żaden tekst nie jest ustawiany w obiekcie ui w registerwindow. Wydaje mi się, że sam sens jest zachowany tzn. Wysyłam sygnał z mainwindow, w którym przekazuje obiekt do slotu w registerwindow. Nie wiem w którym miejscu popełniłem błąd. Szukam odpowiedzi od kilku dni w czeluściach Internetu, ale jeszcze nie znalazłem rozwiązania problemu. Gdyby ktokolwiek był w stanie mnie naprowadzić, albo podać jakąś wskazówkę, będę bardzo wdzięczny.
P.S. Klasa Database została przeze mnie utworzona na potrzeby obsługi połączenia z QSqlDatabse(zawiera logikę i funkcje potrzebne do obsługi sql).
Życzę miłego dnia