Започваме да програмирате на QT

здравей Notepad

В първия пример, ние ще създадем един прост прозорец за редактиране на текст. Това е най-елементарната програма GUI Qt.

Нека разгледаме по-подробно всеки ред код. В първите две, ние включваме заглавните файлове и клас QApplication QTextEdit. които са необходими за този пример. Всеки клас в Qt съответства на заглавния файл със същото име.

Line 6 създава QApplication обект клас а. която контролира основните ресурси, необходими за изпълняване на програма с GUI Qt. Той трябва да премине аргументи argv и аргументи функционират основни (). защото Qt използва някои параметри от командния ред, за да бъдат предадени, когато програмата започва.

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

В съответствие 9, прозорец за редактиране на текст се показва в основния екран на програмата. Защото джаджи могат да действат като контейнери (в случая на класа са QMainWindow лентата с инструменти ленти, менюта, лентата на състоянието, както и няколко други приспособления), можем да покажем само една джаджа в прозореца на програмата ни. По подразбиране, джаджи не са видими. шоу () функция се използва, за да ги покажете.

Линия 11 създава QApplication обект. който генерира цикъл от събития в хода на приложението. Събитията се генерира и при обработването на джаджи. Примери за събития могат да включват кликвания на мишката, клавиши и т.н. Когато въвеждате текст в прозореца за редактиране джаджа QTextEdit, клавишни комбинации, се обработват с помощта на приспособлението, и въвеждане на текст се появява докато пишете.

За да стартирате програмата, отворете команден прозорец и отидете до директорията с .cpp файл на програмата. Изпълнение на следните команди черупки получерупката, да съставят един пример.

След успешното завършване на предишната команда, компилиран програмата ще бъде на разположение в текущата директория на проекта (в Windows, можете да използвате nУверете се, вместо да направи изпълними файлове ще бъдат поставени в отстраняване на грешки или освобождаване на директории, които ще бъдат създадени от грим qmake - .. е помощна програма, която създава конфигурационни файлове на QT интервала проект, ако той е преминал -project аргумент. След като създадете конфигурационен файл (.pro), qmake генерира Makefile, използван от грим полезност за изграждане на заявлението. по-късно, ние ще разгледаме процеса на писане на собствените си .pro файлове.

Добавянето на бутона за излизане

В реалния живот на проекта, обикновено повече от една джаджа. Днес ние добавите бутон QPushButton долу редактиране област. Като кликнете върху него, програмата ще приключи.

Първо свържете QtGui заглавния файл. Той съдържа всички класове на Qt GUI.

Линия 10 се прилага сигнали и слотове механизъм. за да затворите програмата, след като кликнат върху бутона Exit. Слот - функция, която може да бъде използвана по време на изпълнение. Сигнал - функция, слотове функционални които бяха с него през QObject :: свързват.

откажат () - слот клас QApplication. прекратяване на приложението. кликнали () - сигнал, който предава QPushButton натиснат бутон. Статично функция QObject :: свързване свързва специално слот и сигнал. SIGNAL () и SLOT () - макроси, които приемат сигнали и подпис слотове, за тяхната връзка един с друг. Също така, функцията за свързване (), трябва да мине указател към обекта, който ще получава и изпраща сигнали.

Линия 12 се създава обект QVBoxLayout клас. Както вече споменахме, джаджи могат да съдържат и други джаджи. Можете да определите позицията и размера на вградени джаджи директно, но обикновено тя се използва за слоя (оформления). Layer управлява граници вградени джаджи. Например, QVBoxLayout обект локализирана приспособления в една вертикална колона.

В линии 13 и 14, ще добавим поле за редактиране на текст и бутона за излизане да слой оформление. Основната линия 17 е настроен за целия слой приложение.

наследяване QWidget

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

Q_OBJECT макро декларира нашия клас като QObject. Той трябва да бъде поставен в началото на дефиницията на класа. QObject добавя няколко подобрени функции към обичайните клас C ++. Например, класове и имена слот може да бъде заявен по време на изпълнение. Също така, можем да се научим на видовете параметрите на карето и му се обади.

Линията 13 е обявена за да се откажат () слот. След това, ние добавяме слота за сигнала.

В предишните примери, създаване на графични и закрепване слотове извършва в основна функция (). Сега ще използваме конструктор Notepad е.

Както се вижда от дефиницията на класа, ние използваме указатели към обекти и TextEdit quitButton. За обекти QObject. почти винаги рационално разпределяне на паметта на куп, вместо да ги копирате.

Ние използваме функцията TR (), за да обработи всички редове, които са видими за потребителя. Тази функция е полезна, когато приложение трябва да бъдат преведени на няколко езика. Ние няма да навлизаме в подробности, но можете да намерите информацията, в описанието на Qt лингвист библиотека.

Създаване на .pro файл

По-рано, ние използвахме команда qmake -project, за да създадете .pro файл. В следващия пример, ние ще създадете файл ръчно.

Сега, за да се изгради програми на Qt, ще се използват следните команди.

Използването QMainWindow

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

Ние сме създали две допълнителни слотове - отворени () и запишете (). Те ще бъдат отворени и запазете документа. Пример за тяхното изпълнение ще бъде представена по-късно.

Много често един и същи слот се използва едновременно от няколко приспособления. Например, елементите от менюто и съответния бутон на лентата. За да се опрости този процес, в Qt има QAction клас. които могат да бъдат предадени на няколко джаджи и да приложат към слота. Например, QMenu и QToolBar да създадете елементи от менюто с помощта на един единствен QAction действие. Скоро ще видим как ще улеснява процеса на развитие.

На първо място, ние използваме Notepad клас конструктор за създаване на графичен потребителски интерфейс.

Когато създавате действие определя текста показва в джаджа, която ще се добави към тези действия (в нашия случай, меню елемента). Ако ние трябва да добавите бутони за тези действия в лентата с инструменти, ние може да премине върху иконата за всяко действие.

Когато потребителят кликне върху елемент от менюто, действието изпрати сигнал и призовава съответния слот.

Записване и отваряне

В този пример, ние ще изпълнява функциите на слотове отворен () и спасяване (). че се прибавят в предишния пример.

"> Първата стъпка -. Това е искане от страна на потребителя, името на файла да се отваря с Qt включва QFileDialog клас - диалогов прозорец, в който потребителят може да изберете файл статична функция getOpenFileName () отваря модален прозорец, за да изберете файла и се връща на пътя към избрания файл .. Ако потребителят е отменен операцията, функцията връща празен низ.

След името на файла е било получено, ще се опитаме да го отворите с помощта на отворен (функция). Тя връща булева вярно, ако успешно. Ако файлът не може да бъде отворен, ние използваме QMessageBox клас да покаже на потребителя изскачащ прозорец със съобщение за грешка (виж клас описание QMessageBox. За повече информация).

четене на данни става тривиална задача, поради QTextStream класа - обвийте обект QFile. readAll () връща съдържанието на файла като обект QString. Това съдържание ще се постави в полето за редактиране на текст. След това, ние затворете файла с (функцията за затваряне). да върне файлов дескриптор на операционната система.

Ние пристъпи към прилагането спасяване () слот.

За да запишете данните, ние отново се използва клас QTextStream. С него можете да записвате QString низ във файл с помощта на оператора <<.