QT - GUI не от Microsoft Fagot (salieff@mail.ru) Xakep, номер #064, стр. 064-122-1 Кодим оконные интерфейсы под Linux Сегодня Linux все активнее теснит небезызвестную тебе ось на юзерских десктопах. Такое продвижение было бы немыслимо без графического оконного интерфейса. Из этой статьи ты поймешь, что его создание с помощью библиотеки Trolltech QT (активно используемой в Linux; к примеру, с ее помощью написан KDE) ничуть не сложнее, чем кодинг окошек с помощью MFC, VCL, OWL и других распространенных библиотек. Графическая подсистема в UNIX-системах довольно сильно отличается от творения Билла Гейтса. Так уж повелось, что в никсах используется отдельный графический сервер (обычно поддерживающий протокол X11 и называющийся X-сервером), исполняющийся в режиме обычной программы, который с одной стороны общается через ядро с терминальным железом (моник, клава, мышка и т.д.), а с другой - с программами-клиентами, которые могут обращаться к X-серверу как в локальном контексте, так и удаленно через сеть. Обычно X-сервер содержит такие навороты, как удаленное отображение графического контекста, аудит подключений, динамическое расширение модулями отображения (к примеру, для видео-оверлея или отрисовки графики аппаратным акселератором видеокарты) и прочее. Большинство этих вещей присутствовали в реализациях X11 уже в те лохматые годы, когда не то что про PCAnywhere или RDesktop, про Win 3.11 еще никто не слышал. MS безумно гордится тем, что они запихали GUI в ядерный контекст, в WinXP появилась более-менее приличная поддержка скинов, а уж в лонгхорне, поговаривают, GUI вынесут из ядра в отдельный опциональный сервис. Думаю, тебе понятно, откуда растут ноги. Но скажу по тебе секрету, что писать приложения непосредственно для X11 ничуть не веселее, чем под Win32. Естественно, со временем стали появляться библиотеки, маскирующие от программиста детали низкоуровневой реализации. Одной из первых была XAW, все ее великолепие ты можешь увидеть на соответствующем скриншоте. Были и другие, но сейчас реальное лидерство держат библиотеки GTK и QT. Интерфейс GTK немного быстрее, чем QT (в Linux-версии), имеет только ANSI C реализацию, жутко тормозной порт под винды и, на мой взгляд, не самую удачную эргономику интерфейсных компонентов. Поэтому я расскажу, как создавать GUI с помощью QT. Мы возьмем консольную утилиту traceroute и напишем для нее графическую оболочку - фронтенд. Быстрый старт Никаких особенных извращений для того, чтобы начать писать наше приложение, не требуется. Самый обыкновенный сишный main(). В программе существует единственный объект класса QApplication - объект приложения: QApplicaton a(argc, argv); Все графические компоненты в QT наследуются от класса QWidget, мы их так и будем называть - виджеты. Создадим основной виджет: QWidget w; Объекту приложения передается основной виджет: a.setMainWidget(&w); И, наконец, покажем всем наш могучий виджет (по умолчанию он скрыт) и отдадим управление объекту QT-приложения: w.show(); return a.exec(); Вот и все. Как видишь, создать примитивное окошко проще пареной репы. Давай двинемся дальше. Декор в студию! |