Введение в разработку приложений на платформе Atom/MeeGo. Граничин О.Н - 48 стр.

UptoLike

48
мы хотим использовать библиотеки ядра (core), XML (xml) и библиотеки работы с сетью (net). В
результате в файл будет записана следующая строка:
QT += core xml network
Переменная LIBS перечисляет внешние библиотеки, которые мы хотим прилинковать к
приложению, в виде ключей для линковщика. В примере прилинкуем к приложению библиотеку
ncurses:
LIBS += -lncurses
Зачастую возникает необходимость собирать приложение в разных вариантах, например, для
разных целевых платформ. В qmake для поддержки различных видов сборки существует механизм
scopes, который позволяет создавать условные блоки и в зависимости от выполнения условий
переходить в те или иные состояния. Добавим небольшой пример и в наш файл. Введем условные
блоки, которые в зависимости от целевой платформы будут добавлять исходные файлы в проект. Так,
например для windows будет добавлен файл hellowin.cpp :
win32 {
SOURCES += hellowin.cpp
}
А для unix hellounix.cpp:
unix {
SOURCES += hellounix.cpp
}
Также при помощи простой функции exists проверим, существует ли файл main.cpp:
!exists( main.cpp ) {
error( "No main.cpp file found" )
}
Запишем полностью получившийся qmake файл:
CONFIG += qt
QT += core xml network
HEADERS += hello.h
SOURCES += hello.cpp
SOURCES += main.cpp
LIBS += -lncurses
win32 {
SOURCES += hellowin.cpp
}
unix {
SOURCES += hellounix.cpp
}
!exists( main.cpp ) {
error( "No main.cpp file found" )
}
Теперь qmake можно использовать для создания файла сборки приложения. В командной строке в
каталоге с проектом нужно написать:
qmake hello.pro
Затем может быть запущена утилита make или nmake для сборки проекта.
5.3.6. Механизм сигналов и слотов
Сигналы и слоты используются для обмена сообщениями между объектами. Механизм сигналов и
слотов является особенностью Qt. Необходимость в подобном механизме возникает, когда требуется,
чтобы при изменении одного объекта, оповещался другой. Так, например, при разработке
графического интерфейса, при нажатии на кнопку «Закрыть» вызывается метод окна close().