Главная · Все классы · Основные классы · Классы по группам · Модули · Функции

[Предыдущий: Урок 1] [Учебное пособие] [Следующий: Урок 3]

Урок 2 - Кнопка выход

Файлы:

Снимок экрана к Уроку 2

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

Также мы настроим шрифт на кнопке, выбрав более привлекательный вариант, чем тот что предлагается по умолчанию.

 ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
 ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
 **
 ****************************************************************************/

 #include <QApplication>
 #include <QFont>
 #include <QPushButton>

 int main(int argc, char *argv[])
 {
     QApplication app(argc, argv);

     QPushButton quit("Quit");
     quit.resize(75, 30);
     quit.setFont(QFont("Times", 18, QFont::Bold));

     QObject::connect(&quit, SIGNAL(clicked()), &app, SLOT(quit()));

     quit.show();
     return app.exec();
 }

Разберем программу строка за строкой

 #include <QFont>

Так как мы будем работать с классом QFont, то нам необходимо подключить <QFont>.

     QPushButton quit("Quit");

В этом приложении на кнопке будет написано Quit, это означает, что при нажатии на неё приложение будет завершать работу.

     quit.resize(75, 30);

Мы назначаем другой размер кнопки, так как слово Quit имеет меньше символов, чем фраза "Hello world!". Вообще, при создании кнопок, мы можем использовать метод QFontMetrics для получения минимальной длины слова (фразы) в пикселях или доверить QPushButton самой определить размер кнопки.

     quit.setFont(QFont("Times", 18, QFont::Bold));

В этой строчке мы выбираем шрифт для надписи, а именно полужирный шрифт Times размером в 18 пунктов. Мы можем переопределить шрифт по умолчанию для всего приложения Qt, используя метод QApplication::setFont().

     QObject::connect(&quit, SIGNAL(clicked()), &app, SLOT(quit()));

QObject::connect() является, возможно, самой существенной особенностью Qt. Обратите внимание на то, что метод connect() является статической функцией в классе QObject. Не перепутайте этот метод с функцией connect(), которая входит в библиотеку Berkeley для работы с сокетами.

Вызов метода connect() создаёт однонаправленную связь двух объектов Qt (которые унаследованы от QObject или его потомков, непосредственно или косвенно). Любой Qt-объект может иметь и сигналы (для отправки сообщений), и слоты (для приёма сообщений). Все виджеты являются Qt-объектами, так как они являются наследниками QWidget, который, в свою очередь, унаследован от QObject.

Здесь сигнал clicked() кнопки quit соединяется со слотом quit() объекта app, в результате при нажатии кнопки приложение завершает работу.

За более подробной информацией обращайтесь к разделу документации Сигналы и слоты.

Запуск приложения

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

Компиляция программы осуществляется также как и в Уроке 1.

Домашнее задание

Попробуйте изменить размеры окна. Нажмите на кнопку, чтобы закрыть приложение.

Посмотрите, какие еще сигналы вы можете связывать с экземпляром объекта QPushButton? [Подсказка: класс QPushButton наследует большинство функциональных возможностей класса QAbstractButton.]

[Предыдущий: Урок 1] [Учебное пособие] [Следующий: Урок 3]


Copyright © 2008 Trolltech Торговые марки
Qt 4.3.5