I'm trying to connect a signal from one class to a slot in another class but when I do, my application crashes on startup. I read some other posts on here and the Qt forums that eluded to connecting custom signals as such but I think I'm connecting them wrong. Any help is greatly appreciated.
AdministrativeWindow.h
class AdministrativeWindow : public QMainWindow
{
Q_OBJECT
public:
explicit AdministrativeWindow(QWidget *parent = 0);
~AdministrativeWindow();
private slots:
void on_actionExit_Administrative_Window_triggered();
private:
Ui::AdministrativeWindow *ui;
signals:
void windowClose();
};
AdministrativeWindow.cpp
void AdministrativeWindow::on_actionExit_Administrative_Window_triggered()
{
emit windowClose();
close();
}
MainWindow.cpp
connect(adminWindow, SIGNAL(windowClose()), this, SLOT(adminWindowClose()));
void MainWindow::on_ConfigureUsersBtn_clicked()
{
if(adminWindow == NULL)
{
adminWindow = new AdministrativeWindow();
adminWindow->show();
}
else if(adminWindow->isVisible())
{
adminWindow->activateWindow();
adminWindow->showNormal();
}
else
{
adminWindow->show();
}
}
void MainWindow::on_adminWindowClose()
{
delete adminWindow;
adminWindow = NULL;
}
You need to ensure that you're using valid adminWindow
pointer on connect:
void MainWindow::on_ConfigureUsersBtn_clicked()
{
if(adminWindow == NULL)
{
adminWindow = new AdministrativeWindow();
connect(adminWindow, SIGNAL(windowClose()), this, SLOT(adminWindowClose()));
adminWindow->show();
}