Основы программирования в Linux
Шрифт:
Также следует добавить в файл /etc/ld.so.conf следующую строку:
Вставить ее можно в любое место файла.
В системах Linux Fedora и Red Hat эту строку нужно сохранить в файле /etc/ld.so.conf.d/qt-i386.conf. Если вы устанавливали Qt, как показано на рис. 17.1, этот этап уже будет пройден.
Если комплект Qt установлен корректно, переменная окружения
Убедитесь также в том, что каталог lib добавлен в файл /etc/ld.so.conf. Затем выполните как суперпользователь следующую команду:
Испытайте простейшую программу с применением Qt и убедитесь в том, что ваша установка функционирует должным образом (упражнение 17.1).
Введите (или скопируйте и вставьте программный код из загруженного файла) приведенную далее программу и назовите ее qt1.cpp:
При компиляции вам необходимо указать Qt-каталоги include и lib:
На некоторых платформах в конце строки указывается библиотека
Выполнив приложение, вы должны получить окно Qt (рис. 17.2).
Рис. 17.2
Как это работает
В отличие от GTK+ здесь нет вмещающего в себя все заголовочного файла qt.h, поэтому вы должны явно включать заголовочные файлы всех используемых объектов.
Первый объект, с которым вы встречаетесь, —
Вы будете применять два метода
Далее
мы обсудим механизм программирования, управляемого событиями, и вы вставите в приложение виджетСигналы и слоты
Как вы видели в главе 16, сигналы и их обработка — главные механизмы, используемые приложениями GUI для реагирования на ввод пользователя, и ключевые функции библиотек GUI. Механизм обработки сигналов комплекта Qt состоит из сигналов и слотов или приемников, называемых сигналами и функциями обратного вызова в комплекте инструментов GTK+ или событиями и обработчиками событий в языке программирования Java.
Имейте в виду, что сигналы Qt отличаются от сигналов UNIX, обсуждавшихся в главе 11.
Вот как устроено программирование, управляемое событиями: графический интерфейс пользователя состоит из меню, панелей инструментов, кнопок, полей ввода и множества других элементов GUI, называемых виджетами. Когда пользователь взаимодействует с виджетом, например, активизирует пункт меню или вводит какой-то текст в поле ввода, виджет порождает именованный сигнал, такой как
Применение сигналов и слотов довольно специфично — Qt определяет два новых соответствующим образом описанных псевдоключевых слова,
Таким образом, программный код с использованием Qt — не настоящий программный код на С++. Порой это становится проблемой для некоторых разработчиков. См. документацию Qt на Web-сайте http://doc.trolltech.com/, чтобы понять причину применения этих новых псевдоключевых слов в С++. Более того, применение сигналов и слотов не так уж отличается от Microsoft Foundation Classes (MFC, библиотека базовых классов Microsoft) в ОС Windows, в которой также используется модифицированное определение языка С++.
На способы применения сигналов и слотов в Qt есть несколько ограничений, но они не слишком существенные:
сигналы и слоты должны быть функциями-методами класса-потомка
при использовании множественного наследования
оператор
сигналы нельзя применять в шаблонах;
указатели на функцию не могут использоваться как аргументы в сигналах и слотах;
сигналы и слоты не могут переопределяться или обновляться до статуса
Поскольку вы должны писать ваши сигналы и слоты как потомков объекта
Типичное определение класса в файле MyWindow.h для вашего GUI будет напоминать приведенное далее: