Я пытаюсь подключить сигнал от одного класса к слоту в другом классе, но когда я это делаю, мое приложение падает при запуске. Я читал некоторые другие посты здесь и на форумах Qt, которые не позволяли подключать пользовательские сигналы как таковые, но я думаю, что я подключаю их неправильно. Любая помощь с благодарностью.
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;
}
Вы должны убедиться, что вы используете действительный adminWindow
указатель на соединение:
void MainWindow::on_ConfigureUsersBtn_clicked()
{
if(adminWindow == NULL)
{
adminWindow = new AdministrativeWindow();
connect(adminWindow, SIGNAL(windowClose()), this, SLOT(adminWindowClose()));
adminWindow->show();
}
не забудьте выполнить подключение после инициализации указателя
connect(adminWindow, SIGNAL(windowClose()), this, SLOT(adminWindowClose()));
^
valid ptr
также частные слоты являются частными, если они называются обычными функциями-членами, но всегда общедоступны для соединения. Я думаю, что это более чистый дизайн, чтобы определять слоты как публичные, так как их целью является общение и использование частных функций как обычно, когда они необходимы, если вам действительно не нужна такая смешанная концепция, как private slot
(это может существовать, однако, и можно представить некоторые особые обстоятельства, в которых это могло бы иметь смысл, я предполагаю, что это не тот случай)