![]() |
Главная · Все классы · Основные классы · Классы по группам · Модули · Функции | ![]() |
Пример "Qutlook" демонстрирует использование ActiveQt для автоматизации Outlook. Пример использует инструмент dumpcpp для генерации пространства имен C++ для библиотеки типов, описывающей объектную модель Outlook.
Файл проекта для примера выглядит примерно так:
Файл проекта использует инструмент dumpcpp для добавления библиотеки типов MS Outlook в проект. Если это завершится неудачно, тогда генерируемый make-файл только напечатает сообщение об ошибке, в противном случае этап сборки будет теперь запускать инструмент dumpcpp на библиотеке типов и генерировать заголовочный файл и файл cpp (в данном случае, msoutl.h и msoutl.cpp), что объявляет и реализует легкий в использовании API к объектам Outlook.
Класс AddressView - подкласс QWidget для пользовательского интерфейса. Виджет QTreeView будет отображать содержимое папки Контакт (Contact) Outlook'а как обеспечено model.
Класс AddressBookModel является подклассом QAbstractListModel, который соединяется непосредственно к Outlook, используя QHash для кэширования.
Конструктор инициализирует Outlook. Различные сигналы Outlook, предоставленые для извещения о содержании изменений, присоединяются к updateOutlook() slot.
Деструктор завершает сессию.
Реализация rowCount() возвращает несколько записей как сообщал Outlook. columnCount и headerData реализованы для показа четырех столбцов в представлении дерева.
Реализация headerData() возвращает жестко запрограммированные строки.
Реализация data() является ядром модели. Если запрашиваемые данные находятся в кэше, используется кэшированное значение, в противном случае данные получают из Outlook.
Слот changeItem() вызывается когда пользователь изменяет текущую запись используя пользовательский интерфейс. Элемент Outlook доступен с использованием Outlook API, а изменяется с использованием функций-сеттеров свойств. В конечном счёте элемент сохраняется в Outlook и удаляется из кэша. Обратите внимание на то, что модель не подаёт представлению сигнал об изменении данных, так как Outlook испустит свой собственный сигнал.
Слот addItem() вызывает метод Outlook, CreateItem, для создания нового элемента контакта, устанавливает свойства нового элемента в значения введённые пользователем и сохраняет элемент.
Слот update() очищает кэш и испускает сигнал reset() чтобы уведомить представление об изменении данных, требующем перерисовки содержимого.
Остальная часть файла реализует пользовательский интерфейс используя только Qt API, т.е. без непосредственного соединения с Outlook.
Точка входа функции main() в конечном счёте создаёт объект пользовательского интерфейса и входит в цикл обработки событий.
Чтобы собрать пример вы должны сначала собрать библиотеку QAxContainer. Затем запустите ваш make-инструмент в каталоге examples/activeqt/qutlook и запустите получившийся в результате qutlook.exe.
Copyright © 2008 Trolltech | Торговые марки | Qt 4.3.5 |