Ultimate ++: перша програма

Відео: Уроки C # (C sharp) | # 3 - Перша програма на C #

Ultimate ++: перша програма
Перейдемо до реального прикладу. Напишемо просту марну програму, яка виконує вбрання арифметичну дію з двома числами. Запустимо TheIDE і створимо новий пакет demol в колекції MyApps. Як шаблон виберемо Basic Ctrl Lib Application. Буде створено єдиний вихідний файл main.cpp з таким кодом:
#include
GUI _ APP _ MAIN {
}

Це і є мінімальна програма на U ++, яка поки що не робить нічого. Макрос GUI_APP_MAIN замінює функцію main і відповідає за ініціалізацію бібліотеки. Перше, що потрібно зробити, - додати головне вікно:
#include
using namespace Upp;
class MyWindow: public TopWindow {
};
GUI _ APP _ MAIN {
MyWindow w-
w.Run ();
}

Всі класи U ++ знаходяться в просторі імен Upp, тому краще відразу ж його задіяти.

Ми успадковуємо клас MyWindow від класу вікна TopWindow, створюємо його екземпляр і входимо в цикл обробки подій методом Run. Скомпілювавши програму, можна побачити пусте вікно, яке вміє тільки закриватися. Додамо кнопки згортання-розгортання, можливість змінювати розмір і встановимо початкові розміри вікна, викликаючи потрібні методи в конструкторі класу:
class MyWindow: public TopWindow {
public: MyWindow () {
Title ( "Hello world!") .MinimizeBox (). MaximizeBox ()
.Sizeable (). SetRect (0, 0, 300, 300);
}
} -

Таке «нанизування» планування для характерно для U ++ і робить код дуже компактним.



Додамо в вікно потрібні віджети: два текстових поля для операндів і підписи до них, що випадає список для арифметичних операцій з підписом, кнопку «Обчислити» і напис для виведення результату:
class MyWindow: public TopWindow {
public:
EditDouble val1, val2- // Поля введення для операндів
Label l1, l2- // Підписи для полів вводу
DropList operation- // Список, що випадає операцій
Label l3- // Підпис для списку
Button compute- // Кнопка «вирахувати»
Label result- // Напис для результату

Звертають на себе увагу кілька моментів. По-перше, в U ++ існують особливі типи полів введення для речових і цілих чисел. З використанням готового віджета EditDouble можна забути про неправильному введенні числа користувачем. По-друге, всі віджети створюються статично як звичайні члени класу і немає потреби явно вказувати їх ієрархію. Читабельність і простота коду від цього сильно виграють. Порівняйте:



QLabel * l1 = new Qlabel (parent) - // Qt
Label l1- // U ++

Наступний етап - розмістити віджети в вікні. В U ++ немає «гумовою» компонування, яка реалізується в GTK + або Qt за допомогою «сайзер» (sizers). Замість неї застосовуються так звані логічні координати, відлічувані від країв батьківського віджета. Для кожного віджета визначена функція LeftPos (a, size), що задає відстань від лівого краю батьків до віджета і ширину віджету. Аналогічно працюють RightPos, TopPos і BottomPos. Функція HSizePos (a, b) задає відстані від лівого і правого краю батька до віджета і дає віджету міняти ширину разом з батьком. Так само працює VSizePos. Забігаючи вперед, скажу, що в TheIDE є зручний візуальний редактор компоновок, який буде описаний в наступній частині статті. Поки ж зазначимо всю геометрію вручну. Робиться це в конструкторі за допомогою функції Add (widget), яка отобра-жает переданий їй віджет згідно його логічним координатах. Повністю програма тепер виглядає так:
#include using namespace Upp;
class MyWindow: public TopWindow {public:
EditDouble val1, val2- // Поля введення для операндів
Label l1, l2- // Підписи для полів вводу
DropList operation- // Список, що випадає операцій
Label l3- // Підпис для списку
Button compute- // Кнопка «вирахувати»
Label result- // Напис для результату
MyWindow () {
Title ( "Hello world!") .MinimizeBox (). MaximizeBox () .Sizeable (). SetRect (0, 0, 300, 230);
Add (l1.SetLabel ( "Перше число"). J
LeftPosZ (10, STDSIZE) .TopPosZ (10,30)) - Add (val1.HSizePosZ (90, 10) .TopPosZ (15, 20));
Add (l2.SetLabel ( "Друге число"). J
LeftPosZ (10, STDSIZE) .TopPosZ (40,30)) - Add (val2.HSizePosZ (90, 10) .TopPosZ (45, 20));
Add (l3.SetLabel ( "Операція"). J
LeftPosZ (10, STDSIZE) .TopPosZ (70,30)) - Add (operation.HSizePosZ (90, 10) .TopPosZ (75, 20));
Add (compute.SetLabel ( "Порахувати!"). J
HSizePosZ (10, 10) .TopPosZ (105, 20));
Add (result.SetLabel ( "Результат:"). J
HSizePosZ (10, 10) .TopPosZ (135, 20));
}
};
GUI _ APP _ MAIN {MyWindow w- w.Run ();
}

Ultimate ++: перша програма

Легко помітити, що кирилиця підтримується без всяких проблем. Список, що випадає поки порожній. Заповнимо його:
operation.Add ( "+"). Add ( ";"). Add ( "*"). Add ( "/"). SetIndex (0) -

Функція SetIndex встановлює обраної першу операцію «+», тому що за замовчуванням жоден елемент не обраний. Потрібно сказати, що елементами списку можуть бути не тільки рядки, а будь-які пари «ключ-значення». В даному випадку використовується найпростіший варіант, коли задаються тільки значення, а ключі генеруються автоматично.

На цьому створення інтерфейсу можна вважати закінченим. В наступній частині статті я опишу реалізацію логіки нашої програми. Саме там в повній мірі проявиться «магія» U ++.

ІНШЕ

Ієрархія віджетів в u ++ фото

Ієрархія віджетів в u ++

Відео: Qt - Компонування віджетів 1 (для початківців) Важливо розуміти, що редактор компоновок не є повноцінним…

Обробка подій в juce фото

Обробка подій в juce

Відео: Уроки javascript | Урок №13 - Події і обробник подій Переважна більшість тулкіта для С ++ (Gtk +, Qt,…

Ultimate ++: theide фото

Ultimate ++: theide

Відео: N ++: Sigma Structure Symphony (SU-B-17-04) All Gold При кожному запуску TheIDE відкривається вікно вибору…

Ultimate ++: схеми баз даних фото

Ultimate ++: схеми баз даних

Відео: Бази даних, лекція №1 (2013) Об`єкти SqlExp кардинально полегшують створення запитів, але створення самих…

Мова програмування vala фото

Мова програмування vala

Hello world! Розгляд будь-якої мови програмування традиційно належить починати з найпростішої програми «Hello…

Juce: вкладені компонування фото

Juce: вкладені компонування

вкладені компонування У Juce використовується ідеологія, розглянута в попередній статті по U ++, - ієрархія віджетів…

Використовуємо the jucer фото

Використовуємо the jucer

Відео: Соковижималка Novis Vitajuicer Візуальний редактор компоновок The Jucer Як ми вже переконалися, розміщувати…

Неясності з phonon фото

Неясності з phonon

Від труднощів збірки перейдемо до неясним місцях у використанні Phonon. Phonon підтримує ті мультимедійні формати, які…

» » Ultimate ++: перша програма