Alt linux Программирование на языке С++ в среде Qt Creator Е. Р. Алексеев, Г. Г. Злобин, Д. А. Костюк, О. В. Чеснокова, А. С. Чмыхало Москва alt linux 2015



Download 5,27 Mb.
Pdf ko'rish
bet186/193
Sana24.02.2022
Hajmi5,27 Mb.
#227496
1   ...   182   183   184   185   186   187   188   189   ...   193
Bog'liq
Book-qtC


Глава 15. Разработка приложений с графическим интерфейсом
15.4
Стандартные диалоги
Диалог выбора файла для открытия и сохранения, диалог выбора шрифта,
окна сообщений об ошибках являются примерами диалоговых окон, с которыми
часто приходится сталкиваться при работе с программами. Такие диалоги обыч-
но имеют стандартные для всех программ в системе вид и функциональность. Qt
позволяет воспользоваться готовыми диалогами для этих целей, которые легко
вызвать в программе. Классы для работы с диалогами, которые часто использу-
ют в программе, приведены в табл. 15.1.
Таблица 15.1: Некоторые классы готовых диалогов Qt
Класс
Описание особенностей
QInputDialog
Используют для удобства в случае когда необходимо ввести чис-
ловое значение или строку текста. Имеет несколько сигналов,
которые сигнализируют об изменении значения в поле ввода.
Класс имеет статические методы для вызова диалога ввода чис-
ла (getDouble(), getInt()), ввода (getText()) выбора элемента из
списка (getItem()).
QColorDialog
Стандартный диалог выбoра цвета. Класс имеет статический метод
getColor()
для удобного вызова диалога.
QFontDialog
Стандартный диалог выбoра шрифта. Класс имеет статический ме-
тод getFont() для удобного вызова диалога.
QFileDialog
Стандартный диалог выбора файла. Имеет большое количе-
ство настроек, возможность фильтрации файлов по расшире-
нию. Класс имеет статические методы (getExistingDirectory(),
getOpenFileName(), getOpenFileNames(), getSaveFileName()
) для
вызова диалога.
QMessageBox
Диалог сообщение. Используют для вывода информации, сообще-
ний об ошибках и вопросов. Класс имеет статические методы для
удобного вызова в программе информационных окон (about(),
aboutQt()
), сообщений об ошибках (critical(), warning()), вопро-
сов (question()) и сообщений (information()).
В нашем примере мы будем использовать класс QFileDialog для выбора фай-
ла при открытии и сохранении, а также класс QMessageBox. Добавим описание
слотов для открытия и сохранения файла:
private s l o t s :
void s l o t O p e n ( ) ;
void s l o t S a v e ( ) ;
Подключим необходимые заголовочные файлы в mainwindow.cpp:
#include 
#include 
#include 
Добавим реализацию для слотов slotOpen() и slotSave():
//Слот для открытия файла в редакторе
void MainWindow : : s l o t O p e n ( )
Программирование на языке С++ в среде Qt Creator


15.4. Стандартные диалоги
405
{
//Вызвать системный диалог открытия файла в домашней папке пользователя
Q S t r i n g l F i l e N a m e=Q F i l e D i a l o g : : getOpenFileName ( this , " O p e n f i l e . . . " , QDir : :
homePath ( ) , " T e x t f i l e s ( * . t x t ) ;; A l l f i l e s ( * . * ) " ) ;
//указываем фильтры для просмотра файлов
i f ( l Fi l eName . isEmpty ( ) ) //Если пользователь не выбрал ни одного файла
{
return ; //выйти из метода
}
//Спросить пользователя о сохранении документа
i f
( ! a s k F o r F i l e S a v e A n d C l o s e ( ) )
{
//Если пользователь нажал «Отмена» игнорировать вызов — продолжать работу
return ;
}
Q F i l e l F i l e ( l F i l e N a m e ) ; //Устанавливаем имя открытого файла
//Если текстовый файл открыт только для чтения...
i f ( l F i l e . open ( QIODevice : : ReadOnly | QIODevice : : Text ) )
{
mFileName = l F i l e N a m e ; //задать имя файла
//читаем все содержимое и устанавливаем текст для редактора
ui −>p l a i n T e x t E d i t −>s e t P l a i n T e x t ( l F i l e . r e a d A l l ( ) ) ;
l F i l e . c l o s e ( ) ; //закрываем открытый файл
//устанавливаем состояние окна — содержимое не модифицировано
setWindowModified ( f a l s e ) ;
//и обновляем заголовок окна для демонстрации названия текущего открытого файла
u p d a t e T i t l e ( ) ;
}
e l s e
{
//Если при открытии файла возникла ошибка выводим диалоговое окно с сообщением,
//содержащим имя файла, одну кнопку «Ок» и заголовок «Error»
QMessageBox : : warning ( this , " E r r o r " , QString ( " C o u l d n o t o p e n f i l e %1 f o r
r e a d i n g "
) . a r g ( l F i l e . f i l e N a m e ( ) ) , QMessageBox : : Ok) ;
}
}
//Слот для сохранения изменений в текущем файле
void MainWindow : : s l o t S a v e ( )
{
//Если содержимое не модифицировано...
i f
( ! isWindowModified ( ) ) //Если содержимое не модифицировано
{
return ; //Выйти из метода — продолжить работу
}
//Вызвать системный диалог сохранения файла в домашней папке пользователя
Q S t r i n g l F i l e N a m e=Q F i l e D i a l o g : : get S aveFi l eName ( this , t r ( " S a v e f i l e . . . " ) ,
QDir : : homePath ( ) , t r ( " T e x t f i l e s ( * . t x t ) ;; A l l f i l e s ( * . * ) " ) ) ;
//Если пользователь не выбрал имя файла для сохранения...
i f ( l Fi l eName . isEmpty ( ) )
{
return ; // ... выйти из метода
}
Q F i l e l F i l e ( l F i l e N a m e ) ; //Устанавливаем имя открытого файла
//Если текстовый файл открыт для записи
i f ( l F i l e . open ( QIODevice : : WriteOnly | QIODevice : : Text ) )
{
mFileName = l F i l e N a m e ; //Задать имя файла
//Создаем временный QByteArray для записи данных
QByteArray l D a t a ;
//Читаем текст из редактора и добавляем QByteArray, записываем в файл
//и закрываем файл после записи
l D a t a . append ( ui −>p l a i n T e x t E d i t −>t o P l a i n T e x t ( ) ) ;
l F i l e . w r i t e ( l D a t a ) ;
l F i l e . c l o s e ( ) ;
//Устанавливаем состояние окна — содержимое не модифицировано
© 2015 Алексеев Е. Р., Злобин Г. Г., Костюк Д. А., Чеснокова О. В., Чмыхало А. С.


406
Download 5,27 Mb.

Do'stlaringiz bilan baham:
1   ...   182   183   184   185   186   187   188   189   ...   193




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish