Qt:Документация 4.3.2/tutorial-t2

Материал из Wiki.crossplatform.ru

Перейти к: навигация, поиск
40px Внимание: Актуальная версия перевода документации находится здесь

__NOTOC__

Image:qt-logo.png

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

Image:trolltech-logo.png

[Предыдущая: Часть 1 ] [ Учебное пособие ] [Следующая: Часть 3 ]

Содержание

[править] Урок 2 - Кнопка выход

Файлы:

Файл:T2.png

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

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

 #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(&amp;quit, SIGNAL(clicked()), &amp;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));

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

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

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

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

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

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

[править] Запуск приложения

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

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

[править] Домашнее задание

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

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

[Предыдущая: Часть 1 ] [ Учебное пособие ] [Следующая: Часть 3 ]



Copyright © 2007 Trolltech Trademarks
Qt 4.3.2