Пишем адресную книгу на Qt — часть 1
Это руководство является введением в программирование графических интерфейсов на Qt.
- Разработка пользовательского интерфейса
- Наследование классов в Qt
- Определение класса AddressBook
- Реализация класса AddressBook
- Запуск приложения
Здесь мы изучим несколько базовых компонентов, включая:
- Виджеты и менеджеры слоев
- Классы-контейнеры
- Сигналы и слоты
- Устройства ввода и вывода
Если вы только что начали изучать Qt, мы рекомендуем прочитать введение в программирование на Qt.
Несмотря на то, что эта маленькая программа не выглядит, как полноценное графическое приложение, в нем есть много базовых элементов, которые используются в более сложных программах.
Разработка пользовательского интерфейса
Сейчас мы создадим базовый графический интерфейс для адресной книги, который будет состоять из надписей и текстовых полей. Ниже представлен скриншот того, что должно получиться.
iWork. Офисные приложения на Mac. Pages, Numbers, Keynote
Нам необходимы два объекта QLabel — nameLabel и addressLabel , а также два текстовых поля: nameLine — объект класса QLineEdit и addressText — объект QTextEdit. Текстовые поля нужны для того, чтобы пользователь мог вводить имена и адреса своих контактов. Позиции используемых виджетов отмечены на рисунке ниже.
Для реализации адресной книги используются три файла:
- addressbook.h — определение класса AddressBook
- addressbook.cpp — реализация класса AddressBook
- main.cpp — файл, в котором находится функция main() , с экземпляром класса AddressBook
Наследование классов в Qt
В процессе создания программ на Qt, мы часто наследуем встроенные объекты Qt, для того, чтобы добавить в них дополнительный функционал. Это одна из основных концепций программирования классов. Использование наследования для расширения или изменения функционала виджетов имеет следующие преимущества:
- Мы можем создавать реализации виртуальных или чистых виртуальных функций, для осуществления именно того, что нам нужно, и возвращаться к реализации базового класса, когда это необходимо.
- Это позволяет нам инкапсулировать части пользовательского интерфейса внутри класса так, что другим частям приложения не нужно знать об индивидуальных виджетах.
- Подклассы можно использовать для создания кастомных виджетов, а затем использовать этот код в других проектах.
Поскольку в Qt нет конкретного виджета адресной книги, мы унаследуем класс стандартного виджета Qt, и добавим в него новые функции. В этом руководстве мы будем создавать класс AddressBook , и сможем использовать повторно, когда нам понадобится базовый виджет адресной книги.
Определение класса AddressBook
В файле addressbook.h будет находиться определение класса AddressBook .
Мы определим AddressBook , как подкласс QWidget и создадим конструктор для него. Также, мы будем использовать макрос Q_OBJECT для указания того, что класс использует интернационализацию и механизм сигналов и слотов, даже если все эти возможности не нужны нам на данном этапе.
Mac. Офисные приложения Pages, Numbers, Keynote
В этом классе содержится описание свойств nameLine и addressText — приватных экземпляров QLineEdit и QTextEdit, о которых упоминалось ранее. Данные, хранимые в nameLine и addressText будут использоваться во многих функциях приложения.
Мы не подключаем здесь заголовочный файл , поскольку не нуждаемся в определении объектов QLabel на этапе их создания.
Макрос Q_OBJECT реализует некоторые расширенные возможности Qt. В данный момент, он необходим для использования функций tr() и connect() .
Мы закончили работу с файлом addressbook , и переходим к реализации соответствующего ему файла addressbook.cpp .
Реализация класса AddressBook
Конструктор класса AddressBook позволяет передавать ему параметр QWidget *parent . Это параметр передается конструктору базового класса. Данный принцип, когда у родительского класса может быть несколько подклассов, используется в Qt для группировки виджетов. К примеру, если вы удалите объект базового класса, все объекты его наследников также будут удалены.
; addressText = new QTextEdit;
Здесь создаются два экземпляра класса QLabel — nameLabel и addressLabel , а также поля ввода nameLine и addressText . Функция tr() возвращает локализованную версию строки, если она доступна. В противном случае, функция вернет ту же строку.
Программируя на Qt, полезно знать, как работают слои. В Qt есть три главных класса слоев: QHBoxLayout, QVBoxLayout и QGridLayout. Их используют для позиционирования виджетов.
Мы воспользуемся слоем QGridLayout, для позиционирования надписей и текстовых полей в упорядоченном виде. QGridLayout делит все доступное пространство на сетку, и размещает виджеты внутри клеток с указанными коор динатами. На рисунке выше показано расположение клеток и позиции наших виджетов. Рассмотрим следующий код:
addWidget(nameLabel, 0, 0); mainLayout->addWidget(nameLine, 0, 1); mainLayout->addWidget(addressLabel, 1, 0, Qt::AlignTop); mainLayout->addWidget(addressText, 1, 1);
Заметьте, что addressLabel использует параметр Qt::AlignTop для позиционирования. Это сделано для того, чтобы надпись выровнялась по верху клетки с координатами (1, 0). Для более детального понимания работы со слоями, ознакомьтесь с соответствующей документацией.
Для того, чтобы привязать слой к виджету, вызывается функция setLayout():
В последней строчке, мы установили заголовок «Simple Address Book» для нашего виджета.
Запуск приложения
Функцию main() мы поместим в отдельный файл main.cpp . В main() мы создадим объект app класса QApplication. Класс QApplication отвечает за различные ресурсы приложения, такие как шрифт по умолчанию и курсор, а также запускает цикл обработки событий. В любом приложении, написанном на Qt, всегда есть один объект QApplication.
Мы создали виджет AddressBook в стеке и вызвали функцию show() для его отображения. Тем не менее, виджет не будет показан, пока не запустится цикл обработки событий программы. Мы запускаем цикл обработки событий с помощью вызова функции exec(). Результат, который возвращает эта функция, используется в качестве возвращаемого значения функции main() . Когда объект AddressBook будет уничтожен, также удалятся всего его наследники, для предотвращения утечек памяти.
Исходный код всех примеров:
- http://doc.qt.nokia.com/4.7/tutorials-addressbook.html
- http://doc.qt.nokia.com/4.7/tutorials-addressbook-part1.html
Источник: code-live.ru
Youlu Address Book — красивая и функциональная адресная книга
Знаю, что очень многие восхищаются звонилкой, которая встроена в HTC Sense. И правда, она очень хорошая: функциональная шустрая, очень приятная внешне. Если взять голый Android, то его родная звонилка во многом уступает HTC’шной. Лично мне она к.
Знаю, что очень многие восхищаются звонилкой, которая встроена в HTC Sense. И правда, она очень хорошая: функциональная шустрая, очень приятная внешне. Если взять голый Android, то его родная звонилка во многом уступает HTC’шной. Лично мне она кажется куда более запутанной, а потому менее удобно и, если честно, то уродливой. Хотя, поговорки про фломастеры, все знают, да?
Так вот в очередной раз, решив попробовать натянуть на своего HTC Hero очередную кастомную прошивку с Android 2.2 я столкнулся с родной звонилкой, которая снова мне не понравилась. А потому начал искать альтернативы. И нашел.
Если кому интересно, то первые впечатления от использования CyanogenMod 6.1 для HTC Hero я описал у нас на форуме. А вот о звонилках расскажу на сайте.
В одну из них я буквально влюбился. Называется она Youlu Address Book. Отличная вещь. Выглядит стильно, работает шустро, такая же простая и даже местами чуть более удобная, чем Senst’овская. Но имеет один большой недостаток.
Впрочем, недостатком это сочтут не все (для меня это даже плюс), а потому об этом расскажу в самом конце.
Посмотрите на картинку. Прелестная штука, правда? Легкий и приятный интерфейс. Давайте быстро пробежимся по закладкам. Первая из себя представляет звонилку с возможность поиска контактов из вашей адресной книги, используя метод t9.
С этого же экрана легко добавить нового контакт или редактировать любой уже имеющийся. Имеется возможность настроить реакцию на нажатие виртуальных клавиш: вибрация и звуки.
Вторая закладка, которая обозначена иконкой с циферблатом — это лог звонков, кто кому когда и сколько. Видим контакт с аватаркой, время, дату. Тапаем по контакту и дополнительно видим продолжительность звонков. Можно или перезвонить или смс отправить. Само-собой, что при необходимости можно очистить историю звонков.
Долгим тапом по контакту вызывается контекстное меню: позвонить, сделать Ip-звонок, отправить сообщение, сохранить vcard, посмотреть полную информацию о контакте.
Третья закладка — записная книга. Здесь можем или найти нужного контакта с помощью поиска или добавить нового или перейти в группы, если вы их используете. Просто прокручивая людей вверх, при переходе от одной буквы к другой будем видеть полупрозрачную букву алфавита, на которую теперь начинаются имена наших контактов. Справа видим полупрозрачную полосу с буквами — оглавление.
Скользим пальцем по ним, как на iPhone и переходим к нужной букве. В контекстном меню действия почти те же. Разве что теперь можно удалить контакт или редактировать его.
Конечно же можно настроить сортировку по параметрам: имени, имени компании, по частоте совершения звонков. Если вам не нравится, что в записной книжке отображаются совсем все контакты, то можно пометить опцию, чтобы выводились только те, которые имеют телефонный номер.
Возможна работа и с группами контактов. Выделяем нескольких сразу, чтобы, к примеру отправить смс или сообщение или перенести в группу. Ну или просто удалить.
Последняя закладка покажет нам тех, кого мы занесли в избранный список. Там же легко добавить нового любимца.
В настройках Youlu Address Book можно задать частоту синхронизации или провести принудительную, а также просмотреть историю синхронизайций. Также есть полезный пункт, в котором можно выбрать экран, который мы хотим видеть при старте программы. Есть там и еще несколько пунктов типа отправки сообщения разработчику или проверки обновлений приложений, которые тоже могут оказаться полезными.
А теперь о главном минусе. Youlu Address Book не понимает русский язык. В звонилке нет русских букв, поэтому поиск по контактам, которые названы по-русски, не возможен. В адресной книге все русские контакты будут идти в самом конце списка после всех тех, кто назван на латиннице.
Так что самое время воспользовать пунктом из настроек, который позволяет отправить фичереквест разработчику, и предложить ему добавить поддержку русского языка. Тогда, на мой взгляд Youlu Address Book станет идеальной звонилкой-адресной книгой на Android.
Тогда можно поддержать её лайком в соцсетях. На новости сайта вы ведь уже подписались? 😉
Или хотя бы оставить довольный комментарий, чтобы мы знали, какие темы наиболее интересны читателям. Кроме того, нас это вдохновляет. Форма комментариев ниже.
Если вам интересны новости мира ИТ так же сильно, как нам, подписывайтесь на Telegram-канал. Там все материалы появляются максимально оперативно. Или, может быть, удобнее «Вконтакте»?
Поговорить?
Уже наговорили:
Ярослав:
Начинаем тестить. Набор номера. Как мне сделать запрос *111# ?
Ярослав:
2. В журнале звонков при наличии фоток на контакты — оно таки притормаживает. Нету плавности.
+++
Зато понравилось что в журнале звонков от одного контакта он группирует звонки.
Ну и поддержку русского нам подавай 🙂
SemenSemenych:
Я как звонилкой пользуюсь программой Dialer One. Очень удобственная. Есть Т9 одновременно на русском и на английском, что удобно. Есть набор USSD запросов. И выглядит очень похоже на данную программу.
rush:
Кстати, сегодня Єта программа , надо бы скачать обновку ))
rush:
= Кстати, сегодня эта программа ОБНОВИЛАСЬ, надо бы скачать обновку))
Креол:
По мне так Dialer One пока одно из самого лучшего что есть под дройд из звонилок 🙂 Учитывая что автор потихоньку начал фиксить торможение при прокрутке в истории, то скоро вообще идеальная штука будет.
tumuerte:
В звонилке от HTC есть такая приятная функция, как синхронизация контактов с facebook. В других звонилках мне этого очень не хватало.
Мак Сим:
Во всех этих программах нет одного но самого важного пункта. А именно сортировки по фамилии. В самом деле, в какую больную голову вообще пришла идея сортировать контакты по имени.
Voffka:
CheckBalance + dialer one)) но выглядит и эта приятно, буду следить за последующим допилом)
marinaka:
Ой, не знаю-не знаю. Я перепробовала несколько адресных книг, никто не понравился, а недавно наткнулась в Маркете на БЕСПЛАТНУЮ Contapps и влюбилась. Лень если честно обзор писать, посмотрите сами на их сайте: http://www.contapps.com/php/index.php
Кстати, по-русски все прекрасно ищет да и в алфавитном порядке все прекрасно сортирует. Есть правда маааааленький недостаток (точнее сказать, скорей всего для кириллицы недостаток). Программа, как я поняла, умеет искать контакты по букве, которую можно «нарисовать» на экране, но кириллица не работает. Так что у кого на латинском названия контактов — попробуйте, отпишитесь.
все вроде симпатично (глянул одним глазом на Contapps) и кажжется удобно, но есть один вопрос — сейчас нет времени копаться — так вот есть ли в ней возможность набирать номер с клавиатуры или это только органайзер контактов без звонилки-набиралки?
Без звонилки прога, но лично для меня это не помеха (поэтому я наверное сразу и не отметила этот пункт) — я редко кому звоню, кто не в контактах и потом у Дизаера есть кнопка Телефон, так что не обязательно пользоваться адресной книгой.
Gribs:
А я вот сначала использовал Dialer One, но он уж больно сильно тормозил на моем HTC Magic, но потом нашел Ray Dialer, как наборщик он хорош: есть кириллица, при запуске показывает историю вызовов, вся остальная адресная книга идет через стандартную андроидовскую.
Источник: droidnews.ru
Inesoft Address Book — стильный менеджер контактов для Windows Mobile
Интересный и стильный менеджер контактов для смартфонов. Позволяет создавать любое количество дополнительных полей для телефонов, e-mail, IM, даты и адреса.
Внешний вид программы выше всяких похвал – стильный, удобный интерфейс, расчет на бесклавиатурные устройства, красивые визуальные эффекты. Такая важная функция, как поиск, работает практически мгновенно, позволяя находить требуемый запрос даже если эти данные были записаны в примечании.
Функция Caller ID определяет имя и фото звонящего, позволяет устанавливать различные режимы, например, “Вибро”, “Тихо”, или же мелодии на каждый контакт и группу. Режим Dialer объединяет все возможности программы в одном окне: быстрый поиск контакта с помощью системы T9, выбор номера телефона, выбор действия.
Есть система профилей, в которых хранятся настройки, помогающие экономить батарейку (например, отключать на ночь GSM, Wi-Fi, Bluetooth). Имеется оповещение о пропущенных событиях, с которой ни один звонок не останется без внимания. Внешний вид программы легко изменяем с помощью скинов. В общем, мне программа понравилась, думаю ее купить. Познакомиться с ней можно на странице разработчиков.
Если нашли ошибку, выделите текст и нажмите Ctrl + Enter
Источник: lifehacker.ru
Address Book
Address Book (рус: Адресная книга, Контакты) — встроенное программное приложение, представляющее собой централизованное хранилище контактной информации, созданное компанией Apple и работающие только под управлением Mac OS X . Характерной чертой данной программы является интеграция и синхронизация с многими приложениями и устройствами.
Возможности [ ]
- Интеграция с Mail, iCal, iChat , Safari, FaceTime и другими приложениями.
- Синхронизация с КПК , iPod, iPhone, другим Mac’ом или с Интернет-порталами — MobileMe, vCard версий 3.0 или 2.1.
- Наличие Objective-C программного интерфейса с другими приложениями.
- Автоматическое форматирование номеров телефонов по заданным шаблонам.
- Отображение адресов контактов на Google Maps .
- Систематизация контактов: папки, группы, смарт-группы
- Поиск контактов или контактной информации
- Сортировка контактов: по имени или по фамилии
- Архивирование адресной книги
- Карточки адресной книги могут отбражать файлы следующих форматов: JPEG, GIF, TIFF, PNG и PDF.
Описание [ ]
Address Book имеет два режима просмотра контактов: «карточки и колонки» и «карточки»
Контакт может содержать следующие поля:
- Изображение
- Произношение имени
- Имя
- Фамилия
- Должность
- Компания
- Номер телефона
- Адрес электронной почты
- Домашний адрес
- Дата рождения
- Имя пользователя в программах обмена мгновенными сообщениями
- Yahoo
Ссылки [ ]
- Основы работы с Mac: Адресная книга
- AddressBook 5.0 Help :: Создание смарт-групп
Источник: apple.fandom.com
Адресная книга Outlook Express
Адресная книга — это сборник адресов e-mail ваших коллег по электронной переписке, организованный с помощью удобной программной оболочки.
Заполнять адресную книгу Outlook Express можно в двух режимах: во-первых, потратить сначала некоторое время и заранее ввести данные о ваших коллегах, и во-вторых, пополнять адресную книгу «на лету», по мере работы с почтой, — просто копируя туда адреса пришедших писем. Ниже мы рассмотрим эти два случая.
Если вы хотите заполнить адресную книгу заранее, нажмите кнопкуАдресная книга (Address Book)на панели инструментов основного окна Outlook Express, что вызовет появление главного окна этого сборника адресов и др. контактной информации (см. рис. 9.16).
Рис. 9.16. Главное окно адресной книги
Кроме имени и адреса E-mail в адресной книге можно хранить множество различной информации — номера телефонов, пейджеров, личных и служебных страниц Web, обычные почтовые адреса абонентов и пр. Для того, чтобы внести в адресную книгу новое имя, нажмите кнопку Создать контакт. Появится окно, показанное на рис. 9.17.
Введите в соответствующих полях имя абонента и адрес его электронной почты, при желании можете заполнить дополнительные данные на абонента на других закладках. Если вы захотите отредактировать адрес электронной почты или иной параметр, то выберите имя в адресной книге и нажав кнопкуСвойства (Properties), измените данные на закладках аналогичным образом.
Если к вашему компьютеру имеют доступ посторонние люди, не стоит помещать в адресную книгу конфиденциальную информацию, такую как домашние номера телефонов и адреса ваших адресатов.
Рис. 9.17. Заполнение свойств абонента
Вторая возможность: после того, как вы завели адресную книгу и наполнили ее некоторыми адресами, в дальнейшем книгу можно пополнять за счет адресов из вновь пришедших писем. Для этого откройте нужное письмо, отметьте имя адресата в поле заголовка, нажмите правую клавишу мыши и из всплывающего контекстного меню выберите пунктДобавить в адресную книгу.
Теперь, когда адресная книга содержит данные по адресам E-mail ваших коллег по переписке, мы вкратце рассмотрим порядок работы с ней при формировании новых писем и заполнении поля Кому: (To:):
- Нажмите кнопку Создать в основном окне Outlook Express, поместите курсор в полеКому: (To:)в окне создания нового сообщения.
- Щелкните по значку с изображением оторванного листка бумаги рядом со словом Кому:. Это действие вызовет появление диалогового окна (см. рис. 9.18), где можно легко выбрать получателей данного письма.
- Выберите из списка абонентов нужного человека и нажмите кнопку Кому -> (То->)в средней части окна.
- Аналогичным образом добавьте абонентов в полях Копия: (Cc:)илиСкрытая: (Всс:), если необходимо разослать это письмо еще нескольким адресатам.
- Нажмите кнопку ОК, и выбранные адреса появятся в соответствующих полях заголовка нового письма.
- Теперь можно приступать к заполнению тела письма и его отправке, о чем мы уже рассказали ранее.
Рис. 9.18. Выбор получателей сообщения Имена абонентов, введенных в поля Кому: (To:),Копия: (Cc:),Скрытая: (Всс:)с помощью адресной книги, могут быть представлены в окне письма именами абонентов, а не их электронными адресами. Не беспокойтесь — программа Outlook Express сама подставит адреса E-mail при отправке сообщения. Еще одна опция, которую вы можете использовать в адресной книге Outlook Express — это групповые имена. Групповые имена представляют собой ваши личные списки рассылки и удобны в том случае, если вам надо часто рассылать письма постоянным группам людей (например, участникам какого-либо совместного с вами проекта). Групповые имена в Outlook Express создаются нажатием на кнопку Создать группу (New Group)на панели значков адресной книги. Затем вы можете указать имя группы и составить список людей в этой группе. После того как вы создали группу, вы можете использовать имя группы в полеКому:илиКопия:отсылаемого сообщения — это сообщение будет направлено всем, кто входит в эту группу. Чтобы в последствии отредактировать список членов группы и их адреса e-mail, надо выбрать (отметить) уже существующую группу и щелкнуть по кнопкеСвойства.
Источник: studfile.net