ПредишенСледващото

Така стигнах до идеята да се повтори "подвига" на написването на калкулатор, но на D и Qt5!

Да започнем с това, аз не запознати с Qt и неговите концепции, макар че веднъж се опита да се срещне с него. Въпреки това, аз вярвам, че невежеството не е пречка Qt5 като World Wide Web има много примери за този прекрасен набор от инструменти, а има и доста обширна документация от API, можете да намерите тук.

На първо място, ние виждаме, че libQtE5Widgets64.so (или QtE5Widgets64.dll) на разположение (ако приемем, че имате, както и моята 64-битова операционна система), а ако това не е случай, мишката и събира тези библиотеки.

Имах късмет, в които съм се оказа абсолютно чиста Kubuntu 16.04 и един от нашите гости са описани подробно процедурата за сглобяване QtE5 на 64-битов Linux, което взех. Освен това, преди да компилирате трябваше да инсталирате някои от допълнителния софтуер с помощта на командата:

На следващо място, ние имахме малко труден за съставяне на проекта в QtCreator, който работи под ръководството Kolyvanova Виталий, но инсталирането на компилиран libQtE5Widgets64.so.1.0.0 Прекарах малко по-различно: първо, аз я преименува libQtE5Widgets64.so, а след това просто да се копира в папката / ИЪ система - достатъчно странно, но това действие е малко повече от достатъчно.

Сега всичко, което трябва - файл на стандартния qte5.d QtE5 и чиста app.d. файл

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

В тази подготовка за разработването на калкулатора е завършен и ние постепенно преминете към процеса на създаването му.

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

Очевидно е, че в продължение на калкулатора ще изисква дисплея, който ще играе ролята на QLCDNumber елемент; няколко бутона за броя и операциите, които могат да бъдат реализирани с помощта QPushButton контрол; а също така да наложи част от така наречените "сортировъчни" или "еквалайзери" за поставяне в тях елементи: QVBoxLayout - за вертикално разположение на елементите вътре и QHBoxLayout - за хоризонтални елементи на практики.

Много се надявам, че вие ​​сте преди да прочетете тази статия, дори и само сканирано статията «QtE5 - проучване D и Qt5 в удобна графична среда", тъй като дизайнът на кандидатстване QtE5 много трудно (поне аз така си помислих, докато сега изглежда) и го обясни с няколко думи, които мога едва ли, и в допълнение, продължава доста сложен код за разполагане на елементи от ...

Отделно от елементите на интерфейса, имаме нужда от един елемент, в който можем да уверено постави необходимите мерки за контрол, като копчета и други. За щастие, Qt5 има елемент, и то се нарича QWidget, и това е от този елемент трябва да се приложат наследство, за да се създаде един прозорец със собствени GUI елементи:

Приблизително детайла, ние ще използваме нашия калкулатор.

Първо ние създаваме псевдоним на QtE.WindowType чисто за опростяване на кода и неговата лекота на четене, а след това се определят извлечен клас от QWidget MainForm. В клас MainForm да се дефинира конструктор по подразбиране, която се два параметъра - елемент, който е "майка" (компанията-майка по отношение на повиквания към системата, а не наследство) и типа на прозореца. Във вътрешността на конструктора е нищо необичайно се случва: MainForm клас се отнася за строителя родител от супер, а след това поставя собствената си размер (300 пиксела на дължина и 400 височина), а след това се показва в областта за удар с глава на определен етикет (в този случай, тази линия е надписа - «QTE калкулатор»). Но следното твърдение, а именно setStyleSheet ръководство (бяло) е необичайно. Фактът, че това твърдение е еднакво приложим както за повечето елементи QTE GUI и ви позволява да използвате познания по HTML и CSS, за да определите външния вид на даден елемент, в този случай - нормален прозорец. WHITE изброяване също е един от елементите на стратегията за опростяване на кода и определя обичайната низ константа, която съдържа инструкции за боядисване на фона бял.

Сега, ние може да се премести в класа на вътрешния съдържание MainForm и първият ние определяме почти целия набор от елементи на интерфейса:

Почти всички (и това е от ключово значение за номера, операции и да се изчисли бутон), тъй като един от елементите на интерфейса се определя като глобална променлива (да, да, знам, че това не е добре, но другите варианти не съществуват), а именно - QLCDNumber:

След това можете да настроите контролите, според нашите нужди, а ние ще започнем може би с LCD-дисплей стилизиран го дисплей под обичайните джобни калкулатори:

Този код трябва да бъде поставен директно в MainForm клас конструктор като код за инициализация. Въпреки това, че е необходимо известно да се обясни това, което прави този комплект методи LCD обекта. метод setMode определя стойностите на режима да LCD-дисплей и приема като аргумент постоянна (или трансфер, няма да кажа точно), който се поставя директно в един и същи клас. В този случай, QLCDNumber.Mode.Dec kolnstanta зададете десетични числа дисплей режим, но за интереса можете да сложите нещо по-интригуващо, например. shestnadtsateorichny режима на дисплея (постоянен QLCDNumber.Mode.Hex). След установяване на правилния режим на дисплея, ние си поставихме за стила на дисплея с помощта на CSS (аз ще кажа, че метод setStyleSheet е, че ние често се намира!) И след това използвайте основен метод за нас - метод дисплей, който ви позволява да се покаже на дисплея е цяло число.

За съжаление, поради нашата дисплей калкулатор ще се брои само с цели числа :(
Дисплей LCD-не един общ интерфейс елемент, а това означава, че трябва да се мисли за поставянето на елементи в прозореца на приложението.

Фактът, че интерфейсни елементи в Qt5 могат да бъдат поставени в прозореца на приложението, с помощта на така наречените сортировъчни (сортировъчни), или, както те се наричат ​​QtE5 разработчик еквалайзери.

Сортировъчни QtE5 два типа: QVBoxLayout - вертикални и хоризонтални QHBoxLayout - еквалайзер. В тях ние ще постави един бутон, като се използват методите, определени за двата вида сортировъчни: addWidget, razmeyuschayuschy контрол и addLayout, да се нагодят вече Sizer.

Ние създаваме един GUI елементи себе си и да определят своите свойства и след това да създадете класификатор и ги сложете една след другите елементи (просто следвайте кода, или пък не обясни: D). самото разположение ще се извършва с помощта на чудесния D език за програмиране конструкт, наречен с:

В допълнение, след поставянето на елементи и сортировъчни (го правя постоянно!), Ние поставяме последната Sizer директно в главния прозорец се използва метод setLayout клас MainForm на. За да донесе на кода, очевидно е, че настаняването и конфигурацията на елементите е много проста, като цяло и тяхното създаване - в хода на създаване, ние просто преминават от правилното обект показалеца на основния елемент (родител, в този случай, е форма на MainForm) и някои parametr- ЕВРОВОК, който може да бъде един бутон текст или друг подходящ дескриптор.

Въпреки това, по-горе код все още не е пълна, тъй като все още не сме описа логика калкулатора и събития, които свързват вече обявиха от формата бутона и LCD-дисплей.
Ние определяме броя на глобални променливи за натрупани брой аргументи операции на събиране, изваждане, умножение и деление, както и да определи низ съхраняване резултатът от операцията (необходима за изпълнение на определени действия, обикновено джобен калкулатор) и числова променлива, която ще поддържа общата сума на транзакцията да се показва с екран:

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

Той работи много просто: ние ще се закача номера на цифровите показан в момента на калкулатора с помощта на оператора за конкатенация на низове. Допълнителни функции updateLCD и setOperationSign помощ правилно показване на резултата, а броят на правилно зададени знака на математическа операция.

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

Сега трябва само да признае математическа операция, избрана от потребителя, както и за актуализиране на показаната стойност, така:

В съответствие с това е необходимо да се сложи манипулатор събитие да се поставят вътре ученик блок (С), за да се Qt5 в състояние да реагират правилно на един бутон натиснете "равно на". Този манипулатор просто prooiskhodit превода на поредица от цифри шофиране в цяло число, а след това да го използвате като вторият аргумент на математическата операция (първият аргумент, тъй като вече се разбира, че е променлива от резултат, който вече съдържа първото число влезе), която е била маркировката, пуснати на operationSign чрез бутоните на съответните дейности по обработка.

Поставянето на следващата стъпка е да подадат следните, леко преработени функция главен:

Вътре основната ние създаваме за четливостта на кода псевдоним на прозорци тип QtE.WindowType.Window и проверявате колко добре Qt5 да се зареди. ние също така ще създаде екземпляр на QApplication (прилагане инстанция на Qt, входната точка към исковата молба), за да обхване, предавани по програмата аргументи (ако има такива ще следват), след което има, е да създадете копие на MainForm (първи параметър - майка елемент, който в този случай не е защото самата кутия ще бъде на първо място в йерархията на елементите на GUI; вторият вариант - един и същи вид на прозорец).
След това, ние просто се покаже създаден прозореца и се съхранява показалеца Qt5, и просто се изпълнява.

Запазете файла и съставя, изпълнява, получаване тук е в резултат на:

Както написах калкулатор или опит ми с qte5, фар софтуер

Благодаря ви много искам да кажа, разработчикът на този наистина великолепен свързване с Qt5, Mokhov Генадий Владимирович, за помощта му при преподаване работа с QtE5 и много ценни съвети, дадени в хода на написването на тази статия!

Подкрепете проекта - споделете линка, благодаря!