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



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


Глава 15. Разработка приложений с графическим интерфейсом
//Файл сгенерированный uic при обработке файла формы
#include " u i _ m a i n w i n d o w . h "
MainWindow : : MainWindow ( QWidget ∗ p a r e n t ) :
QMainWindow ( p a r e n t ) ,
u i (new Ui : : MainWindow ) //Создаем объект формы, созданной в QtDesigner
{
ui −>s e t u p U i ( t h i s ) ; //Применяем дизайн, который мы создали в QtDesigner
//к текущему окну
. . . . .
• Деструктор: удаляет объект на который ссылается указатель ui
MainWindow : : ~ MainWindow ( )
{
//Удалить форму из памяти
delete u i ;
}
Таким образом, через указатель ui мы можем получить доступ к созданной
форме и элементам на ней. Например, мы можем получить доступ к действиям
добавленным к главному меню нашего редактора и задать горячие клавиши для
них:
//Задаём комбинации клавиш для действий
ui−>actionUndo−>s e t S h o r t c u t ( QKeySequence : : Undo ) ;
ui−>actionRedo−>s e t S h o r t c u t ( QKeySequence : : Redo ) ;
ui−>actionCut −>s e t S h o r t c u t ( QKeySequence : : Cut ) ;
ui−>actionC_opy−>s e t S h o r t c u t ( QKeySequence : : Copy ) ;
ui−>action_Paste −>s e t S h o r t c u t ( QKeySequence : : Paste ) ;
ui−>a c t i o n S e l e c t _ a l l −>s e t S h o r t c u t ( QKeySequence : : S e l e c t A l l ) ;
ui−>action_New−>s e t S h o r t c u t ( QKeySequence : : New) ;
ui−>action_Open−>s e t S h o r t c u t ( QKeySequence : : Open ) ;
ui−>action_Save−>s e t S h o r t c u t ( QKeySequence : : Save ) ;
ui−>action_Exit −>s e t S h o r t c u t ( QKeySequence : : Quit ) ;
Обратите внимание на то, как мы используем класс Qt QKeySequence для
того, чтобы задать горячие клавиши для действий. Помимо возможности за-
дать комбинацию клавиш текстовой строкой (например QKeySequence (Ctrl +
X)) или с помощью специально определенных констант для клавиш (например
QKeySequence
(Qt :: CTRL + Qt :: Key_X)), можно воспользоваться набором
стандартных клавиатурных сокращений, которые будут соответствовать стан-
дартам системы. Так для повторения отмененного действия в ОС Linux поль-
зователь сможет воспользоваться комбинацией клавиш Ctrl+Shift+Z, а в ОС
Windows привычной комбинацией Ctrl+Y.
Нашему текстовому редактору еще не хватает функциональности: нам необ-
ходимо запрограммировать создание, открытие и сохранение текстового файла,
а также пункты меню Help.
Для начала добавим объявления слота для создания нового файла и добавим
поле для сохранения пути текущего открытого файла:
private s l o t s :
void slotNew ( ) ;
private :
Q S t r i n g mFileName ;
Мы используем частный метод updateTitle() для того, чтобы обновить заго-
ловок окна и вывести название программы и путь к текущему открытому файлу:
Программирование на языке С++ в среде Qt Creator


15.3. Программирование формы созданной в Qt Designer
403
private :
void u p d a t e T i t l e ( ) ;
Реализация метода обновления заголовка:
//Метод обновления заголовка окна
void MainWindow : : u p d a t e T i t l e ( )
{
//Подставляем в название заголовка имя текущего открытого файла.
//Комбинацией символов " [ ∗ ] " обозначаем место, где будет выводиться знак "∗" в случае,
//когда содержимое окна модифицировано.
Q S t r i n g l T i t l e=Q S t r i n g ( " T e x t E d i t o r - % 1 [ * ] " ) . a r g ( mFile . f i l e N a m e ( ) ) ;
//устанавливаем заголовок окна
s e t W i n d o w T i t l e ( l T i t l e ) ;
}
Метод setWindowTitle() позволяет не только задать текст заголовка для
окна, но и отметить несохраненные изменения в текущем открытом докумен-
те. Для этого, после заголовка мы добавили шаблон [*]. Теперь, если сооб-
щить главному окну о редактировании содержимого посредством вызова слота
QWidget::setWindowModified(bool)
со значением true, то после текста заголов-
ка появится символ «*», означающий, что содержание главного окна изменено
и его следует сохранить. Слот setWindowModified(bool) мы соединили с сиг-
налом modificationChanged(bool) текстового поля QPlanTextEdit с помощью
редактора сигнально-слотовых соединений в редакторе форм (см. предыдущий
пункт).
Добавим реализацию слота
MainWindow::slotNew()
:
//Слот для создания нового документа
void MainWindow : : slotNew ( )
{
mFileName = " U n t i t l e d F i l e " ; //Задать имя для нового файла по умолчанию
ui−>p l a i n T e x t E d i t −>c l e a r ( ) ; //Очистить текстовое поле
setWindowModified ( f a l s e ) ; //Установить — содержание не модифицировано
u p d a t e T i t l e ( ) ; //Обновить заголовок окна
}
Теперь присоединим объект QAction для создания нового документа к слоту:
connect(ui−>action_New, SIGNAL(triggered()),this, SLOT(slotNew()), Qt::UniqueConnection);
Сигнал выпускается при выполнении действия (вызова пункта меню, нажатие
кнопки на панели инструментов, для которой была добавлено действие и т.д.).
В конце конструктора вызовем слот slotNew():
MainWindow : : MainWindow ( QWidget ∗ p a r e n t ) :
QMainWindow ( p a r e n t ) ,
u i (new Ui : : MainWindow )
//Создаем объект, который содержит дизайн созданный в редакторе форм
{
. . . . . .
//В конце вызываем слот для нового документа. Таким образом, пользователь сможет сразу
//же приступить к работе
slotNew ( ) ;
}
Остальные пункты меню мы запрограммируем в следующем параграфе, в
котором мы рассмотрим работу со стандартными системными диалогами в Qt.
© 2015 Алексеев Е. Р., Злобин Г. Г., Костюк Д. А., Чеснокова О. В., Чмыхало А. С.


404
Download 5,27 Mb.

Do'stlaringiz bilan baham:
1   ...   181   182   183   184   185   186   187   188   ...   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