2.4 Клас Label

Клас Label використовується в основному для відображення різних пояснювальних написів, як з можливістю їх редагування користувачем, так і без. Приклади виведення текстів за допомогою цього компонента ми бачили в попередніх лекціях, починаючи з найпростіших програм. Мабуть, це один з найбільш часто використовуваних компонентів.

Можливість редагування написи ярлика задається методом void Label :: setEditable (bool editOnSingleClick, bool editOnDoubleClick = false, bool lossOfFocusDiscardsChanges = false). У випадку, якщо параметр lossOfFocusDiscardsChanges приймає значення true, то клацання мишею де-небудь під час редагування ярлика, скасовує внесені до тексту зміни.

Текст, що відображається компонентом класу Label, має тип рядка String і задається в конструкторі Label:: Label (const String & componentName = String :: empty, const String & labelText = String :: empty), де componentName - назва ярлика, необхідне для потреб налагодження, a labelText - відображається напис. Крім того, задати текст ярлика можна за допомогою функції void Label :: setText (const String & newText, bool

broadcastChangeMessage), де newText - новий текст. Другий параметр необхідний для генерації повідомлення про ізмненія тексту ярлика (у тому випадку, якщо він приймає значення true), проте в більшості випадків йому можна присвоїти значення false.

Отримати поточний текст ярлика можна за допомогою методу const String Label :: getText (bool returnActiveEditorContents = false) const. Приймається параметр необхідний лише в тому випадку, якщо ярлик знаходиться в стадії редагування тексту користувачем. Якщо параметр приймає значення true, функція повертає текст, що відображається ярликом на момент її виклику. У тому випадку, якщо параметр приймає значення false, функція поверне текст не раніше, ніж користувач закінчить його набір і натисне клавішу <ENTER>. У тому випадку, якщо можливість редагування написи заборонена, що приймається функцією параметр неважливий.

Для введення в ярлик змішаної інформації, наприклад, рядків і чисел, необхідно скористатися оператором або методом склеювання (конкатенації) рядків класу String, а також можливостями його конструктора. Наприклад, якщо в програмі є целочисленная змінна iWorkers, що відображає число робочих якогось підприємства, то вивести інформацію про це можна наступним чином (Лістинг 2.1):

Label * pWorkersLabel = new Label ("WorkersLabel");

String sWorkers = String (T ("Число робочих:")) + = String (iWorkers); pWorkersLabel-> setText (sWorkers, false);

Лістинг 2.1. Приклад перетворення цілочисельний змінної для виведення інформації в текстовий напис

Кожен ярлик має наступні колірні характеристики: колір кордону, колір фону і колір тексту, що відображається. Той чи інший колір задається методом, спадкоємною класом Label від Component, void Component :: setColour (int colourld, const Colour & colour). Перший параметр, що приймається функцією, показує, який саме колір (межі, фону або тексту) ярлика слід змінити, а другий задає власне цей колір.

Значення ID кольору можна задавати за допомогою елементів нумерованого списку, що входить до складу класу Label: enum Colourlds {backgroundColourld = 0x1000280, textColourld = 0x1000281, outlineColourld = 0x1000282 (колір фону, тексту і зовнішнього кордону написи, відповідно).

Крім того, оформлення написи можна змінити, задавши характеристики шрифту, Font. Новий шрифт ярлика задається методом void Label :: setFont (const Font & newFont). Отримати поточний шрифт напису можна за допомогою функції const Font & Label :: getFont () const throw ().

Вирівнювання тексту напису щодо меж компонента здійснює його метод void Label :: setJustificationType (const Justification & justification). Характер вирівнювання задається об'єктом класу Justification, який включає в себе нумерований список (Лістинг 2.2).

enum

{

left = 1, right = 2, horizontallyCentred = 4, top = 8,

bottom = 16, verticallyCentred = 32, horizontallyJustified = 64, centred = 36, centredLeft = 33, centredRight = 34, centredTop = 12, centredBottom = 20, topLeft = 9, topRight = 10, bottomLeft = 17, bottomRight = 18

}

Лістинг 2.2 Характер вирівнювання тексту напису щодо меж компонента.

2.5 Клас TextEditor

У більшості GUI framework-ів є окремі компоненти або віджети для створення однорядкового і многострочного полів введення (наприклад, класи QLineEdit і QTextEdit в Qt). У бібліотеці Juce для цих цілей використовується один і той же клас, TextEditor, зовнішній вигляд і поведінку примірників якого може значно відрізнятися, в залежності від налаштувань, що задаються програмістом.

Віджети цього класу надають користувачеві можливості для введення і редагування даних, тексту і чисел, а також обміну даними з буфером обміну (вирізання, копіювання і вставка), що позбавляє розробника від додаткової реалізації. Текст можна виділяти за допомогою миші, клавіатури і контекстного меню.

Введення тексту користувачем у віджеті TextEditor може здійснюватися як в один рядок, так і в кілька рядків. Режим введення задається методом void TextEditor :: setMultiLine (bool shouldBeMultiLine, bool shouldWordWrap = true). Цю функцію необхідно викликати відразу ж після оголошення об'єкта класу TextEditor (втім, якщо ви хочете отримати однорядкове поле введення, то її можна не викликати). Якщо перший з її параметрів приймає значення false, то віджет приймає вид однорядкового поля введення, а якщо true, то з'являється можливість вводити кілька рядків. Якщо значення другого параметра дорівнює true, то в віджеті перенесення рядків буде здійснюватися автоматично по досягненні його краю при наборі тексту. В іншому випадку перенесення рядка буде здійснюватися виключно після натискання клавіші <ENTER>.

Текст, що знаходиться в віджеті, повертає метод const String TextEditor:: getText () const. Новий текст в ньому задає функція void TextEditor :: setText (const String & newText, bool sendTextChangeMessage = true). Вона очищає поле введення і вставляє в віджет текст newText. У тому випадку, якщо параметр sendTextChangeMessage приймає значення true, то надсилається повідомлення про зміну тексту всім слухачам (listeners) поля введення.

Для приміщення тексту в область віджету, крім методу setText, можна скористатися функцією void TextEditor :: insertTextAtCaret (const String & textToInsert), яка вставляє текст textToInsert на поточній позиції курсору. У випадку, якщо якась ділянка тексту був виділений, то при виклику функції він замінюється на рядок-параметр. Цим можна скористатися для програмного видалення будь-якого ділянки тексту: викликати спочатку функцію-член void TextEditor :: setHighlightedRegion (const Range <int> & newSelection), щоб виділити ділянку тексту, а потім - метод insertTextAtCaret з путой рядком (String :: empty) як параметр.

Як правило, натискання користувачем клавіші <ENTER> на клавіатурі означає завершення введення рядка і перехід на нову. Проте в деяких випадках потрібна інша реакція на натискання цієї клавіші. За допомогою функції void TextEditor :: setReturnKeyStartsNewLine (bool shouldStartNewLine) можна змінити поведінку текстового поля введення на натискання клавіші <ENTER>. Якщо параметр shouldStartNewLine приймає значення false, то натискання на клавішу не приводить до переходу на новий рядок, а повідомлення про цю подію буде оброблено в слухачі поля введення (TextEditor :: Listener). У випадку, якщо поле введення є однорядковим, метод setReturnKeyStartsNewLine можна не викликати.

Виклик методу void TextEditor :: setReadOnly (bool shouldBeReadOnly) з параметром true встановлює режим, який дає можливість тільки перегляду тексту, але не редагування його користувачем. У разі необхідності змінити текст, його можна передати віджет програмно, наприклад, функцією setText.

У випадку, якщо об'єкт класу TextEditor використовується як однорядкове поле введення, можна включити режим введення пароля. Цей режим встановлюється в конструкторі компонента TextEditor :: TextEditor (const String & componentName = String :: empty, juce_wchar passwordCharacter = 0). У випадку, якщо другий параметр приймає значення, відмінне від нуля, то все вводяться користувачем символи будуть заміщатися яким-небудь іншим. Параметр passwordCharacter, власне, і містить код заміщує символу. Детальніше з використанням TextEditor в якості поля введення пароля можна познайомитися на прикладі, наведеному нижче.

У випадку, якщо ви використовуєте об'єкт класу TextEditor в якості многострочного поля введення, який відображається текст може перевищувати розміри віджета. При цьому перегляд тексту можливий за допомогою смуг прокрутки. Для їх автоматичного відображення необхідно викликати метод void TextEditor :: setScrollbarsShown (bool shouldBeEnabled) з параметром true. Якщо товщина смуг прокрутки по замовчуванню вас з яких-небудь причин не влаштовує, її можна задати програмно викликом функції void TextEditor :: setScrollBarThickness (int newThicknessPixels), де параметр - товщина використовуваних смуг прокрутки в пікселях.


Информация о работе «Розробка додатку для обробки матриць»
Раздел: Информатика, программирование
Количество знаков с пробелами: 60950
Количество таблиц: 1
Количество изображений: 2

Похожие работы

Скачать
165990
30
46

... ії; - існуючий підрозділ імпортування італійських меблів буде забезпечувати поставку меблів із Італії за напрацьованою схемою; РОЗДІЛ 3. РОЗРОБКА ТА АНАЛІЗ ЕФЕКТИВНОСТІ МАРКЕТИНГОВОЇ СТРАТЕГІЇ КОНЦЕНТРАЦІЇ ТОВ „КЛАСС-ЛАЙН” В СЕГМЕНТІ ПОСЛУГ „ДІЗАЙН ІНТЕР’ЄРІВ»   3.1 Стратегічні цілі проектного комплексу концентрованого маркетингу ТОВ „Класс-Лайн”   У світовій практиці відомо чотири види ...

Скачать
75191
22
33

... приймаємо рівною 22۰10-6м2/c згідно з [13] вибираємо індустріальне масло І-20А. Змазування підшипників проводиться в редукторі тим же маслом, яким змащуються і зубчаті передачі. При мастилі картера коліс підшипники кочення змащуються бризками масла. 2. МЕТРОЛОГІЧНА ПІДГОТОВКА ВИРОБНИЦТВА   2.1 Технічний опис складальної одиниці Проміжний вал поз. 1 складальної одиниці (рис.2.1) ...

Скачать
42785
3
8

... особливих властивостей, що відбивають реальну природу інформаційного джерела. У даному розділі мова йтиме про застосування контекстно-контекстно-залежного імовірнісного моделювання в методах ощадливого кодування відеоінформації. У рамках контекстно-контекстно-залежного моделювання специфічні особливості відеоданих є основою для виробітку критеріїв формування факторних векторів і розбивки їхньої ...

Скачать
69468
35
0

... детально на основі загального вирішення задачі.ЗАВДАННЯ ДО КУРСОВОЇ РОБОТИ Розробити компоненти технічного і програмного забезпечення мікропроцесорного пристрою, який включає аналогово-цифровий і цифро-аналоговий перетворювачі і виконує функцію лінійної системи автоматизованого регулювання. Системи описується заданим пропорційно-інтегро-диференціальним рівнянням, яке зв'язує аналогові сигнали х ...

0 комментариев


Наверх