Саммерфилд Марк - QT 4: программирование GUI на С++ стр 4.

Шрифт
Фон

Находясь в консольном режиме, войдите в каталог hello и задайте команду:

qmake -project

для создания файла проекта, независимого от платформы (hello.pro ), и затем задайте команду:

qmake hello.pro

для создания на основе файла проекта зависимого от платформы файла makefile .

Выполните команду make для построения программы . Затем выполняйте программу, задавая команду hello в системе Windows или ./hello в системе Unix и open hello.app в системе Mac OS X. Для завершения программы нажмите кнопку закрытия окна, расположенную в заголовке окна. Если вы используете Windows и установили версию Qt с открытым исходным кодом вместе с компилятором MinGW, вы получите ярлык для окна DOS, в котором переменные среды правильно настроены на Qt. Вызвав это окно, вы можете компилировать в нем Qtприложения, используя описанныевыше команды qmake и make. Формируемые исполнительные модули помещаются в папку debug или release, например, C:\qt-book\hello\release\hello.exe.

Если вы используете Visual С++ компании Microsoft, то вам потребуется выполнить команду nmake, а не make. Здесь вы можете поступить по-другому и создать проект в Visual Studio на основе файла hello.pro, выполняя команду:

qmake -tp vc hello.pro

и затем выполнить построение программы в системе Visual Studio. Если вы используете Xcode на Mac OS X, то можете сгенерировать проект Xcode с помощью следующей команды:

qmake -spec macx-xcode

Рис. 1.2. Текстовая метка с простым форматированием HTML.

Прежде чем перейти к следующему примеру, позволим себе небольшое развлечение, а именно заменим строку

QLabel *label = new QLabel("Hello Qt!");

на строку

QLabel *label = new QLabel("<h2><i>Hello</i> "

"<font color=red>Qt!</font></h2>");

и снова выполним построение приложения. Как иллюстрирует этот пример, совсем не трудно выделять элементы пользовательского интерфейса Qtприложения с использованием некоторых простых средств форматирования документов HTML.

Взаимодействие с пользователем

QLabel QPushButton

Исходный код этого приложения находится на компакт-диске в файле /examples/chap01/quit/quit.cpp. Ниже приводится содержимое этого файла:

01 #include <QAapplication>

02 #include <QPushButton.h>

03 int main(int argc, char *argv[])

04 {

05 QApplication app(argc, argv);

06 QPushButton *button = new QPushButton("Quit");

07 QObject::connect(button,

Если вы получаете ошибку при компиляции оператора #include <QApplication> , возможно, это происходит из-за применения старой версии Qt. Убедитесь, что вы используете Qt 4.1.1 или более новую версию Qt 4.

SIGNAL(clicked()),

08 &app, SL0T(quit()));

09 button->show();

10 return app.exec();

11 }

Виджеты Qt генерируют сигналыв ответ на выполнение пользователем какого-то действия или изменение состояния. Например, QPushButton генерируют сигнал clicked() при нажатии пользователем кнопки. Сигнал может быть связан с функцией (называемой слотом в данном контексте) для автоматического ее выполнения при получении данного сигнала. В нашем примере мы связываем сигнал кнопки clicked() со слотом quit() объекта приложения QApplication . Макросы SIGNAL() и SLOT() являются частью синтаксиса; более подробно они объясняются в следующей главе.

Рис. 1.3. Приложение Quit (завершить работу).

Теперь мы построим приложение. Мы предполагаем, что вами создан каталог quit и в нем находится файл quit.cpp . Выполните команду qmake из каталога quit для формирования файла проекта, затем используйте полученный файл для создания файла makefile:

qmake -project

qmake quit.pro

Теперь постройте приложение и запустите его на выполнение. Если вы нажмете кнопку quit или клавишу пробела на клавиатуре (она также приводит к нажатию этой кнопки), приложение завершит свою работу.

Компоновка виджетов

Это приложение состоит из трех виджетов: QSpinBox , QSlider и QWidget . QWidget является главным окном приложения. Виджеты QSpinBox и QSlider помещены внутрь QWidget , и они являются дочерними виджетами по отношению к QWidget . С другой стороны, мы можем сказать, что QWidget является родительским виджетом по отношению к QSpinBox и QSlider . Сам QWidget не имеет родителя, потому что используется в качестве окна самого верхнего уровня. Конструкторы QWidget и все его подклассы принимают параметр QWidget * , задающий родительский виджет.

Рис. 1.4. Приложение Age (возраст).

Ниже приводится исходный код:

01 #include <QApplication>

02 #include <QHBoxLayout>

03 #include <QSlider>

04 #include <QSpinbox>

05 int main(int argc, char *argv[])

06 {

07 QApplication app(argc, argv);

08 QWidget *window = new QWidget;

09 window->setWindowTitle("Enter Your Age");

10 QSpinBox *spinBox = new QSpinBox;

11 QSlider *slider = new QSlider(Qt::Horizontal);

12 spinBox->setRange(0, 130);

13 slider->setRange(0, 130);

14 QObject::connect(spinBox, SIGNAL(valueChanged(int)),

15 slider, SLOT(setValue(int)));

16 QObject::connect(slider, SIGNAL(valueChanged(int)),

17 spinBox, SLOT(setValue(int)));

18 spinBox->setValue(35);

19 QHBoxLayout *layout = new QHBoxLayout;

Ваша оценка очень важна

0
Шрифт
Фон

Помогите Вашим друзьям узнать о библиотеке