QT 4: программирование GUI на С++ | страница 12
Если вы используете 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("
Hello "
> "Qt!");
и снова выполним построение приложения. Как иллюстрирует этот пример, совсем не трудно выделять элементы пользовательского интерфейса Qt—приложения с использованием некоторых простых средств форматирования документов HTML.
Взаимодействие с пользователем
Второй пример показывает возможности взаимодействия пользователя с программой. Приложение представляет собой кнопку, которую пользователь может нажать и тогда приложение закончит свою работу. Исходный код этой программы очень напоминает исходный код программы Hello, но здесь вместо QLabel используется QPushButton в качестве главного виджета и добавляется код, обеспечивающий реакцию программы на действие пользователя (нажатие кнопки).
Исходный код этого приложения находится на компакт-диске в файле /examples/chap01/quit/quit.cpp. Ниже приводится содержимое этого файла:
>01 #include
>02 #include
>03 int main(int argc, char *argv[])
>04 {
>05 QApplication app(argc, argv);
>06 QPushButton *button = new QPushButton("Quit");
>07 QObject::connect(button, SIGNAL(clicked()),
>08 &app, SL0T(quit()));
>09 button->show();
>10 return app.exec();
>11 }
Виджеты Qt генерируют сигналы[2]в ответ на выполнение пользователем какого-то действия или изменение состояния. Например, QPushButton генерируют сигнал clicked() при нажатии пользователем кнопки. Сигнал может быть связан с функцией (называемой слотом в данном контексте) для автоматического ее выполнения при получении данного сигнала. В нашем примере мы связываем сигнал кнопки clicked()