QT 4: программирование GUI на С++
Шрифт:
Это издание содержит новые главы, в которых описываются архитектура Qt 4 модель/представление, новый фреймворк для подключаемых модулей и основы программирования встроенных систем с помощью Qtopia, а также новое приложение. И так же как в книге для Qt 3, здесь основное внимание уделяется объяснению принципов Qt—программирования, а не просто изложению другими словами и обобщению обширной интерактивной документации Qt.
Предполагается, что вы знакомы с основами программирования на С++, Java или C#. Программный код примеров использует подмножество С++, избегая многие его возможности, которые редко требуются при Qt—программировании. В нескольких местах, где нельзя обойтись без специальных конструкций С++, дается подробное объяснение их применения.
Если у вас уже есть опыт программирования нa Java или C#, но мало или совсем нет опыта программирования на С++, мы рекомендуем начать с приложения
Qt создала себе репутацию средства разработки межплатформенных приложений, но благодаря своему интуитивному и мощному программному интерфейсу во многих организациях Qt используется для одноплатформенных разработок. Пакет программ «Adobe Photoshop Album» — один из примеров продукта на массовом рынке Windows, написанного средствами Qt. Многие сложные системы программного обеспечения на таких вертикальных рынках, как средства анимации 3D, цифровая обработка фильмов, автоматизация проектирования электронных схем (для проектирования чипов), разведка нефтяных и газовых месторождений, финансовые услуги и формирование изображений в медицине, строятся при помощи Qt. Если свои средства к существованию вы получаете благодаря успешному программному продукту для Windows, который создан при помощи Qt, вы можете легко создать новые рынки для систем Mac OS X и Linux просто путем перекомпиляции программного продукта.
Qt может применяться с различными лицензиями. Если вы собираетесь создавать коммерческие приложения, вы должны приобрести коммерческую лицензию Qt; если вы собираетесь создавать программы с открытым исходным кодом, вы можете использовать версию с открытым исходным кодом (с лицензией GPL). Qt является основой, на которой построены К Desktop Environment (KDE) и многие другие приложения с открытым исходным кодом.
Кроме сотен классов Qt существуют дополнения, расширяющие рамки и возможности Qt. Некоторые из этих программных продуктов поставляются компанией «Trolltech» — например, модуль сценариев для приложений Qt (QSA — Qt Script for Applications) и компоненты Qt Solutions, в то время как другие подобные программные продукты поставляются другими компаниями и сообществом по разработке приложений с открытым исходным кодом. Информацию по дополнениям Qt можно найти в сети Интернет по адресу [0] . Qt также имеет хорошо зарекомендовавшее и преуспевающее сообщество пользователей, которое использует список почтовой рассылки qt—interest; подробности вы найдете по адресу http://lists.trolltech.com/.
0
От составителя: поскольку библиотека Qt в 2008м была куплена Nokia, адреса теперь не "www.trolltech.com", а "qt.nokia.com". Всё остальное — такое же :).
Если вы обнаружили в книге ошибки, имеете предложения для следующего издания или хотите высказать свое мнение, мы будем рады все это услышать от вас. Вы можете связаться с нами по электронной почте по адресу [email protected]. Ошибки будут размещены в сети Интернет на странице http://doc.trolltech.com/qt-book-errata.html.
Благодарности
Прежде всего, мы хотим выразить свою благодарность Айрику Чеймб-Ингу (Eirik Chambe-Eng), президенту компании «Trolltech». Айрик не только с энтузиазмом вдохновлял нас на написание версии этой книги для Qt 3, он также позволил нам потратить много нашего рабочего времени на ее написание. Айрик и исполнительный директор компании «Trolltech» Хаавард Норд (Haavard Nord) прочитали рукопись и сделали ценные замечания. Их щедрость и предвидение дополнялись и поощрялись Маттиасом Эттричем (Matthias Ettrich), ведущим разработчиком программного обеспечения в компании «Trolltech» и нашим шефом. Маттиас снисходительно относился к игнорированию нами наших обязанностей, когда мы были полностью вовлечены в процесс написания первого издания этой книги, и дал нам множество советов по формированию хорошего стиля Qt—программирования.
Для первого
При подготовке издания Qt 4 мы по-прежнему получали большую помощь и поддержку от Айрика, Хааварда и Маттиаса. Клаус Шмидингер продолжал давать нам свои ценные советы, и нашими важными рецензентами из компании «Trolltech» были Эндриас Аардал Хансен (Andreas Aardal Hanssen), Хенрик Харц (Henrik Hartz), Виви Глукстад Карлсен (Vivi Gluckstad Karlsen), Трентон Шультц (Trenton Schultz), Энди Шоу (Andy Shaw) и Пал де Вибе (Pel de Vibe).
Кроме упомянутых выше рецензентов мы получали экспертную помощь от Xaральда Ферненгела (Harald Fernengel) (базы данных), Волкера Хилшаймера (Volker Hilsheimer) (ActiveX), Бредли Хьюза (Bradley Hughes) (многопоточная обработка), Тронда Кьернесена (Trond Kjernesen) (графика 3D и базы данных), Ларса Кнолла (Lars Knoll) (графика 2D и интернационализация), Сэма Магнусона (Sam Magnuson) (qmake), Мариуса Бугге Монсена (Marius Bugge Monsen) (классы отображения элементов), Димитри Пападопулоса (Dimitri Papadopoulos) (Qt/X11), Пола Олава Твита (Paul Olav Tvete) (пользовательские виджеты и программирование встроенных систем), Рейнера Шмида (Rainer Schmid) (работа с сетью и XML), Амрит Пол Синх (Amrit Pal Singh) (введение в С++) и Гуннара Слетта (Gunnar Sletta) (2D-гpaфика и обработка событий).
Дополнительную благодарность мы выражаем группам подготовки документации и технической поддержки компании «Trolltech» за помощь в решении вопросов, связанных с подготовкой документации, так как книга отнимала у нас столь много времени, и системным администраторам компании «Trolltech» за обеспечение рабочего состояния наших машин и наших сетевых соединений во время работы над проектом.
Что касается производственной части, то Трентон Шультц создал сопроводительный компакт-диск, а Катрин Бор (Cathrine Bore) из «Trolltech» вела для нас контракты и обеспечивала юридические вопросы. Мы также благодарны Натан Клемент (Nathan Clement) за иллюстрации с троллями. И наконец, мы выражаем нашу благодарность Ларе Уисонг (Lara Wysong) из компании «Pearsons» за очень хорошее управление процессом производства.
Краткая история Qt
Средства разработки Qt впервые стали известны общественности в мае 1995 года. Первоначально Qt разрабатывались Хаарвардом Нордом (исполнительным директором компании «Trolltech») и Айриком Чеймб-Ингом (президентом «Trolltech»). Хаарвард и Айрик познакомились в Норвежском институте технологии, г. Тронхейм, который они окончили, получив степень магистра по теории вычислительных систем и машин.
Хаарвард стал проявлять интерес к разработке графического пользовательского интерфейса на С++, когда он был привлечен шведской компанией к разработке инструментального средства, предназначенного для разработки графического интерфейса на С++. Спустя два года (летом 1990 г.) Хаарвард и Айрик работали вместе над разработкой на С++ приложения для баз данных ультразвуковых изображений. Эта система должна была предоставлять графический пользовательский интерфейс в системах Unix, Macintosh и Windows. Однажды этим летом Хаарвард и Айрик вышли на улицу, чтобы понежиться на солнышке, и когда они присели на скамейку в парке, Хаарвард сказал: «Нам нужна объектно—ориентированная система отображения». Последующая дискуссия стала интеллектуальной основой объектно—ориентированной межплатформенной системы разработки графического пользовательского интерфейса, к созданию которой они вскоре приступили.
В 1991 году Хаарвард начал писать классы, которые фактически образовали Qt, причем проектные решения принимались совместно с Айриком. В следующем году Айрику пришла идея «сигналов и слотов» — простой, но мощной парадигмы программирования графического пользовательского интерфейса, которая в настоящее время заимствована некоторыми другими инструментальными средствами. Хаарвард воспринял эту идею и вручную реализовал ее. К 1993 году Хаарвард и Айрик разработали первое графического ядро Qt и могли создавать свои собственные виджеты. В конце этого года Хаарвард предложил совместно заняться бизнесом и построить «самые лучшие в мире инструментальные средства разработки на С++ графического пользовательского интерфейса».