QT 4: программирование GUI на С++ | страница 54
>01 void MainWindow::openRecentFile()
>02 {
>03 if (okToContinue()) {
>04 QAction *action = qobject_cast
>05 if (action)
>06 loadFile(action->data(). toString());
>07 }
>08 }
При выборе пользователем какого-нибудь недавно используемого файла вызывается слот openRecentFile(). Функция okToContinue() используется в том случае, когда имеются несохраненные изменения, и если пользователь не отменил сохранение изменений, мы определяем, какой конкретный пункт меню вызвал слот, используя функцию QObject::sender().
Функция qobject_cast
Поскольку мы знаем, что слот вызывался объектом QAction, в данном случае программа все же правильно сработала бы при использовании функции static_cast
Применение диалоговых окон
В данном разделе мы рассмотрим способы применения диалоговых окон в Qt: как они создаются и инициализируются и как они реагируют на действия пользователя при работе с ними. Мы будем использовать диалоговые окна Find, Go-to-Cell и Sort (найти, перейти в ячейку и сортировать), которые были созданы нами в главе 2. Мы также создадим простое окно About (справка о программе).
Рис. 3.12. Диалоговое окно Find приложения Электронная таблица.
Мы начнем с диалогового окна Find. Поскольку мы хотим, чтобы пользователь имел возможность свободно переключаться с главного окна приложения Электронная таблица на диалоговое окно Find и обратно, это диалоговое окно должно быть немодальным. Немодальным