Създаване на диалози

Страницата е създадена на:15 април 2019 и редактирана на:15 април 2019

Диалогът е прозорец, който се показва на потребителя, с цел той да види или въведе определена информация. В Qt има няколко готови диалога, които могат да се използват за въвеждане на информация, необходима в често срещани в практиката ситуации, но за специфични за конкретното приложение ситуации е необходимо да се съставят специфични диалози.

Готови диалози

Това е диалог, с помощта на който, потребителят може да въведе една стойност – кратък текст, цяло или реално число или избор на една възможност от списък възможности.

Вижте повече на адрес:
http://doc.qt.io/qt-4.8/qinputdialog.html

Създаване на диалог с Qt Creator

Стартирайте от менюто команда:

File – New File or Project... Ctrl+N

От левия списък, от раздел Files and Classes изберете: Qt

От следващия списък изберете:

Qt Designer Form Class

и щракваме бутона "Choose..."

В прозореца, който се показва, виждате списък с готови шаблони. Под надписа template/Forns можете да изберете един от три вида диалози: диалог с разположени отдолу бутони (Dialog with Buttons Bottom); с разположени вдясно бутони (Dialog with Buttons Right) или без бутони (Dialog widthout Buttons).

Изберете, като пример, който ще опишем по-надолу първата възможност Dialog with Buttons Bottom и щракнете бутона "Continue".

Показва се нов прозорец, в който се задава име на новия клас диалог (Class Name). С всяка промяна в името на класа, Qt Creator автоматично променя и имената в полетата Header file, Source file, Form file и Path. Щракнете бутон "Continue".

В последния прозорец щракнете бутон "Done".

Проектиране на външния вид на диалог

Външният вид - какви визуални елементи ще има върху даден диалог и как ще са наредени в неговия прозорец, се проектира с Qt Creator в режим design или с отделната програма designer. Веднага след създаване на диалог по описания току що начин, Qt Creator автоматично отваря в режим дизайн файла на неговата форма.

Избор на общия вид и добавяне на компоненти

В режим Design ако не се вижда прозорец Widget Box, то го направете видим с командата от менюто: Window – Views – Widget Box.

От прозореца Widget Box може да издърпате и сложите върху формата на диалога други необходими компоненти.

Нека, за пример, да сложим календар. Намерете го в раздел Display Withgets, компонента Calendar Withget и го изтеглете в прозореца на диалога.

Управление разположението на компонентите

Сложените в един прозорец компоненти могат да бъдат разположени по няколко начина:

В първия случай при промяна на размера на прозореца положението и размерите на компонентите не се променя, в останалите случаи - компонентите променят размерите си по определен начин, така че разположението им да остане, такова, каквото е зададено.

Нека, за пример, да направим така че поставеният календар и двата бутоните под него да се разположат вертикално и при промяна на размерите на прозореца, календарът да променя пропорционално размерите си, така че винаги да се вижда целия. За целта: щракнете в свободното пространство до календара и после щракнете върху бутона Lay Out Vertically. Размерите на календара се коригират, така че той да запълни целия прозорец. Сега, ако промените размера на прозореца, ще забележите, че пропорционално се променя и размера на календара.

Задаване на други свойства на компонентите

Кои са компонентите, разположени в един прозорец и каква е йерархичната връзка между тях, може да видите в прозореца Object Inspector. Свойствата на даден обект се виждат в прозореца Property Editor. Информация за предназначението и възможните стойности на компонентите от различен тип може да намерите в документацията. Най-бързо до тази информация може да стигнете ако щракнете върху съответния компонент и натиснете F1. Това ще отвори Qt Assistant на страницата с описанието на компонента.

Когато завършите задаването на подходящи свойства, запишете във файл, конструирания диалог. Например, файл с име calendarDialog.ui.

Създаване на програмен код за диалог

При създаване на диалог с Qt Creator по описания начин, автоматично се създават и два файла, съдържащи програмен код calendarDialog.h и calendarDialog.cpp. Може да отворите тези файлове и да продължите да ги редактирате и ръчно, в режим Edit.

Показване на създадения диалог

Отворете формата на главния прозорец на програмата, която правите, в режим Design и добавете нова точка Calendar в нейното меню, например във File. (Вижте Създаване на меню)

За да създадете слот, който да приема сигнала, който се излъчва при щракване върху новата точка от менюто, намерете в прозорец Action Editor, реда с името на действието, съответстващо на новата, създадена, точка в менюто. Най-вероятно нейното име е acttion_Calendar. Щракнете десен бутон на мишката върху името на действието и изберете "Go to slot..." Изберете сигнал triggered() и щракнете OK. Qt Creator автоматично добавя необходимите редове код и се отваря върху реализацията на съответния слот.

Ако използвате "Go to slot... отново, след като съответния програмен код вече съществува, то само ще се отвори неговото място в режим Edit.

Използване на нови компоненти с designer

Ако сте програмирали собствени компоненти, наследници на Qt компонентите, които може да се ползват чрез Qt designer, то може с Qt designer да използвате и тези компоненти.

Например, програмирали сте компонента, наследник на QLineEdit, която при натискане на клавиш изпълнява нещо, различно от готовата компонента QLineEdit. Например, издава различни звуци при натискане на клавишите.

Поставете с Qt designer компонента, на която вашата компонента е наследник. За горния пример това е QLineEdit. Щракнете десен бутон на мишката върху сложената компонента и изберете Promote to... В диалога, който се показва, срещу надписа Promoted class name въведете името на класа, наследник на QLineEdit, който сте програмирали. Когато изписвате името на класа, в полето срещу надписа Header file автоматично се съставя името на заглавния .h файл, в който сте обявили класа. Ако сте поставили име на заглавния файл, различно от името на класа, поправете автоматично изписаното име с това, което вие сте сложили на .h файла. Внимавайте за точното спазване на малки и големи букви в името на файла. В Windows няма значение какви са буквите, но ако искате програмата ви да се компилира без проблеми и на Mac, и Linux (системи, които правят разлика между малки и големи букви в имената на файловете), спазвайте големината на буквите. Щракнете бутона Add и вашият клас се добавя в списъка.

Щракнете отново десен бутон на мишката върху компонентата, родител на вашата компонента. Този път в изскачащото меню надписа Promote to (не Promote to... с многоточие) отваря подменю със списък от добавени класове. Изберете името на класа, който трябва да замени наследения Qt клас.

Сега вече, при компилиране на програмата, вместо от поставения в режим design Qt клас, компонентата ще е от класа наследник – програмираният от вас клас и поведението на компонентата ще е такова, каквото сте го програмирали.

Когато щракнете десен бутон на мишката върху, компонента, чиито клас ще бъде променен при компилиране, в изскачащото меню има надпис: Demote to, следван от името на наследения Qt клас. Ако щракнете върху Demote to, променянето на класа по време на компилиране ще се прекрати. Отново с десен бутон на мишката и Promote to, може да възстановите променянето на класовете.

 

Направено с MyCMS. Copyright CC BY-ND 4.0.