Глава 15. Разработка приложений с графическим интерфейсом
2. Применить к виджетам компоновки, начиная с наиболее вложенных видже-
тов;
3. Добавить меню, панели, настроить действия;
4. Настроить объекты на форме с помощью редактора свойств;
5. Сделать сигнально-слотовые соединения, если необходимо;
6. Реализовать логику работы в исходном коде программы.
15.7
Сохранение настроек
Для сохранения настроек в программе мы воспользуемся классом QSettings.
Он позволяет сохранять настройки программы стандартным для программной
платформы способом. В ОС Linux и Mac OS X это конфигурационные файлы
(.ini и. .plist), а под управлением ОС Windows настройки программы можно
сохранять в системный реестр. Также класс QSettings часто используют для
редактирования произвольных. .ini и .plist файлов и ключей системного ре-
естра Windows.
Чтобы добавить поддержку сохранения настроек в программе объявим
несколько дополнительных методов.
private s l o t s :
void s l o t P r e f e r e n c e s A c c e p t e d ( ) ;
private :
void r e a d S e t t i n g s ( ) ;
void w r i t e S e t t i n g s ( ) ;
void a p p l y S e t t i n g s ( ) ;
Метод readSettings будет читать настройки программы и инициализиро-
вать настройками наш диалог. Метод writeSettings будет читать настройки,
установленные в диалоге, и записывать их. Наконец метод applySettings будет
получать текущие настройки от диалога и настраивать соответствующим обра-
зом программу.
void MainWindow : : r e a d S e t t i n g s ( )
{
//Указываем, где хранились настройки. QSettings::NativeFormat — в формате определенном
системой
//QSettings::UserScope — настройки для каждого пользователя отдельно.
//Также устанавливаем имя организации и название программы
Q S e t t i n g s l S e t t i n g s ( Q S e t t i n g s : : NativeFormat , Q S e t t i n g s : : UserScope , " " , qApp
−>a p p l i c a t i o n N a m e ( ) ) ;
//Открываем группу настроек
l S e t t i n g s . beginGroup (SETTINGS_GROUP_VIEW) ;
//Читаем настройки
bool lShowToolBar=l S e t t i n g s . v a l u e (SETTING_SHOW_TOOLBAR, true ) . t o B o o l ( ) ;
m S e t t i n g s D i a l o g −>setShowToolBar ( lShowToolBar ) ;
bool l ShowStatus B ar = l S e t t i n g s . v a l u e (SETTING_SHOW_STATUS_BAR, true ) . t o B o o l
( ) ;
m S e t t i n g s D i a l o g −>setShowStatusBar ( lShowStatusBar ) ;
}
void MainWindow : : w r i t e S e t t i n g s ( )
{
//Указываем как сохранять настройки. QSettings::NativeFormat — в формате определенном
системой
//QSettings::UserScope — настройки для каждого пользователя отдельно.
//Также устанавливаем имя организации и название программы.
Q S e t t i n g s l S e t t i n g s ( Q S e t t i n g s : : NativeFormat , Q S e t t i n g s : : UserScope , " " , qApp
−>a p p l i c a t i o n N a m e ( ) ) ;
Программирование на языке С++ в среде Qt Creator
15.8. Использование сторонних разработок в собственном проекте
415
//Открываем группу настроек
l S e t t i n g s . beginGroup (SETTINGS_GROUP_VIEW) ;
//Записываем настройки
l S e t t i n g s . s e t V a l u e (SETTING_SHOW_TOOLBAR, m S e t t i n g s D i a l o g −>isShowToolBar ( ) ) ;
l S e t t i n g s . s e t V a l u e (SETTING_SHOW_STATUS_BAR, m 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 ( ) ) ;
}
void MainWindow : : a p p l y S e t t i n g s ( )
{
//Читаем настройки установленые в диалоге и применяем их
ui−>mainToolBar−>s e t V i s i b l e ( m S e t t i n g s D i a l o g −>isShowToolBar ( ) ) ;
ui−>s t a t u s B a r −>s e t V i s i b l e ( m S e t t i n g s D i a l o g −>i s S h ow S tatu s B ar ( ) ) ;
}
Модифицируем также метод
showPreferencesDialog
, чтобы он вызывал считывание
настроек. Также добавим реализацию метода
slotPreferencesAccepted
.
void MainWindow : : s h o w P r e f e r e n c e s D i a l o g ( )
{
r e a d S e t t i n g s ( ) ; //Считываем настройки и устанавливаем их для диалога
m S e t t i n g s D i a l o g −>show ( ) ; //Показываем диалог настроек
}
void MainWindow : : s l o t P r e f e r e n c e s A c c e p t e d ( )
{
w r i t e S e t t i n g s ( ) ; //Записать новые настройки
a p p l y S e t t i n g s ( ) ; //Применить настройки
}
В конструкторе главного окна соединим сигнал accepted от диалога к
слоту slotPreferencesAccepted:
connect(mSettingsDialog, SIGNAL(accepted()), this, SLOT
(slotPreferencesAccepted()), Qt::UniqueConnection);
15.8
Использование сторонних (third party) разработок в
собственном проекте
Программная реализация уже существует для множества функциональных
возможностей, для большинства распространенных стандартов и для решения
большого количества типичных задач. Например, реализация протокола SMTP
(Simple Mail Transfer Protocol) для электронной почты или библиотека для быст-
рого преобразования Фурье, или даже визуальный элемент для вывода графика
функции — являются примерами задач, с которыми может сталкиваться разра-
ботчик. Поэтому программист может столкнуться с необходимостью исследовать
предметную область, спроектировать и разработать собственный вариант реше-
ния для них, выполняя работу заново с самого начала, хотя для этих задач уже
существует реализация в других программных продуктах (библиотеках, инстру-
ментариях, и т. п.).
Использование сторонних разработок в собственном проекте может значи-
тельно сократить время создания программы, обогатить функциональные воз-
можности, и, возможно, обеспечить совместимость со стандартами и другими
программами, которые уже существуют. Конечно, в таком случае приходится
иметь дело с кодом, созданным другим программистом, который может содер-
жать свои собственные особенности, дефекты, требования к выполнению. Но в
большинстве случаев (если сторонняя разработка достаточно хорошо протести-
© 2015 Алексеев Е. Р., Злобин Г. Г., Костюк Д. А., Чеснокова О. В., Чмыхало А. С.
416
Do'stlaringiz bilan baham: |