У меня есть главное окно, нам нём кнопка, которая открывает новое модальное окно (кнопка Параметры).У этого модального окна есть кнопка, которая его закрывает (кнопка Сохранить). Хочется, чтобы при закрытии модального окна по нажатию этой кнопки в статусбаре отображалась надпись.
Мне не понятно назначение указателя ui при создании окна. Как ссылаться на этот указатель, но у главного окна?
ParametersWindow::ParametersWindow(QWidget *parent) :
QDialog(parent),
ui(new Ui::ParametersWindow)
{
ui->setupUi(this);
}
UPD: У MainWindow создал публичный метод:
void MainWindow::messageInStatusBarMainWindow(const QString &message) {
ui->statusBar->showMessage(message);
}
При нажатии на кнопку Сохранить в окне с параметрами он вызывается:
void ParametersWindow::on_save_button_clicked()
{
dynamic_cast<MainWindow *>(ParametersWindow::parent())->messageInStatusBarMainWindow("Настройки сохранены");
ParametersWindow::close();
}
Однако приложение валится при нажатии на Сохранить.
Силами комментирующих было найдено практичное решение: В классе главного окна был создан публичный метод, выводящий сообщение в statusBar:
void MainWindow::messageInStatusBarMainWindow(QString message) {
ui->statusBar->showMessage(message, 2000);
}
В методе, обрабатывающем нажатие кнопки Сохранить у модального окна этот метод вызывается, где в параметры и передаётся нужное сообщение:
void ParametersWindow::on_save_button_clicked()
{
dynamic_cast<MainWindow *>(parent())->messageInStatusBarMainWindow(tr("Настройки сохранены"));
ParametersWindow::close();
}
Надо завести флаг в диалоге, показывающий, принят ли диалог, или отклонен, и геттер для этого флага.
В showEvent диалога устанавливаем флаг в false
При нажатии на кнопку "сохранить" устанавливаем флаг в true, теперь окружающие классы могут понять, что диалог принят
В главном окне после вызова exec диалога проверяем состояние флага через публичный геттер диалога и в зависимости от возвращенного значения записываем строку в статусбар.
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости