Глава 15. Разработка приложений с графическим интерфейсом
Рис. 15.11: Создание диалога настроек (шаг 2).
>Скомпоновать по вертикали). Элементы Group Box и Button Box распо-
ложатся в вертикальной компоновке на форме.
7. Измените размер формы. Для этого выберите SettingsDialog в дереве объ-
ектов и подведите указатель мышки к краю формы или выберите свойство
geometry
и измените. Сделайте размер формы меньше. В редакторе свойств
выберите флажок modal и установите его. Измените свойство windowTitle
на «Settings».
Рис. 15.12: Пример: Диалог настроек для проекта SimpleTextEditor.
Объявление класса диалога настроек (settingsdialog.h):
c l a s s S e t t i n g s D i a l o g : public QDialog
{
Q_OBJECT
public :
e x p l i c i t S e t t i n g s D i a l o g ( QWidget ∗ p a r e n t = 0 ) ;
~ S e t t i n g s D i a l o g ( ) ;
bool isShowToolBar ( ) const ;
void setShowToolBar ( bool pShow ) ;
bool i s S h o w S t a t u s B a r ( ) const ;
void s e t S h o w S t a t u s B a r ( bool pShow ) ;
private :
Ui : : S e t t i n g s D i a l o g ∗ u i ;
} ;
Также реализуем методы для установки и получения значения флажков
(settingsdialog.h):
bool S e t t i n g s D i a l o g : : isShowToolBar ( ) const
{
Программирование на языке С++ в среде Qt Creator
15.6. Создание собственных диалогов
413
return ui
−>showToolbarCheckBox−>i s C h e c k e d ( ) ;
}
void S e t t i n g s D i a l o g : : setShowToolBar ( bool pShow )
{
ui−>showToolbarCheckBox−>setChecked ( pShow ) ;
}
bool S e t t i n g s D i a l o g : : i s S h o w S t a t u s B a r ( ) const
{
return ui
−>showStatusBarCheckBox−>i s C h e c k e d ( ) ;
}
void S e t t i n g s D i a l o g : : s e t S h o w S t a t u s B a r ( bool pShow )
{
ui−>showStatusBarCheckBox−>setChecked ( pShow ) ;
}
Добавим вызов диалога из программы. Для этого в файле mainwindow.h сде-
лаем предварительное объявление:
class SettingsDialog;
и добавим объявление слота, который будет показывать диалог и переменную,
указывающую на объект диалога настроек:
private s l o t s :
void s h o w P r e f e r e n c e s D i a l o g ( ) ;
private :
S e t t i n g s D i a l o g ∗ m S e t t i n g s D i a l o g ;
В файле mainwindow.cpp подключите файл описания класса SettingsDialog:
#include "settingsdialog.h"
Создаем диалог настроек
MainWindow : : MainWindow ( QWidget ∗ p a r e n t ) :
QMainWindow ( p a r e n t ) ,
u i (new Ui : : MainWindow ) ,
m S e t t i n g s D i a l o g (new S e t t i n g s D i a l o g ( t h i s ) )
//Создаем диалог настроек
{
ui −>s e t u p U i ( t h i s ) ; //Применяем дизайн, который мы создали в редакторе форм в текущем
окне
и добавляем реализацию для слота, который вызовет диалог:
void MainWindow : : s h o w P r e f e r e n c e s D i a l o g ( )
{
//Показываем диалог настроек
m S e t t i n g s D i a l o g −>show ( ) ;
}
В конце добавляем сигнально-слотовое соединение, которое присоединит сиг-
нал от меню к слоту:
c o n n e c t ( ui −>a c t i o n P r _ e f e r e n c e s , SIGNAL( t r i g g e r e d ( ) ) , m S e t t i n g s D i a l o g , SLOT(
s h o w P r e f e r e n c e s D i a l o g ( ) ) ,
Qt : : UniqueConnection ) ;
Конечно, мы могли присоединить сигнал к слоту show() диалога напрямую,
но в следующем параграфе мы рассмотрим, как хранить в системе и считывать
настройки нашей программы, и перед тем как вызвать диалог мы добавим код,
который будет инициализировать диалог настроек.
А пока суммируем наши знания о дизайнере форм. Алгоритм работы с ди-
зайнером форм выглядит примерно так:
1. Примерно разместить виджеты на форме;
© 2015 Алексеев Е. Р., Злобин Г. Г., Костюк Д. А., Чеснокова О. В., Чмыхало А. С.
414
Do'stlaringiz bilan baham: |