Жасмин Бланшет - QT 4: программирование GUI на С++

Тут можно читать онлайн Жасмин Бланшет - QT 4: программирование GUI на С++ - бесплатно полную версию книги (целиком) без сокращений. Жанр: comp-programming, издательство КУДИЦ-ПРЕСС, год 2007. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    QT 4: программирование GUI на С++
  • Автор:
  • Жанр:
  • Издательство:
    КУДИЦ-ПРЕСС
  • Год:
    2007
  • Город:
    Москва
  • ISBN:
    978-5-91136-038-2
  • Рейтинг:
    3.75/5. Голосов: 121
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 80
    • 1
    • 2
    • 3
    • 4
    • 5

Жасмин Бланшет - QT 4: программирование GUI на С++ краткое содержание

QT 4: программирование GUI на С++ - описание и краткое содержание, автор Жасмин Бланшет, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

Единственное официальное руководстро по практическому программированию в среде Qt 4.1.

Применяя средства разработки Qt компании «Trolltech», вы сможете создавать на С++ промышленные приложения, которые естественно работают в средах Windows, Linux/UNIX, Linux для встроенных систем без изменения программного кода и Mac Os X. Книга написана сотрудниками компании «Trolltech». Она представляет собой практическое руководство по успешному применению самой мощной из всех созданных до сих пор версий Qt — Qt 4.1.

Из книги «Qt 4: программирование GUI на С++» вы узнаете о наиболее эффективных приемах и методах программирования с применением Qt 4 и овладеете ключевыми технологиями в самых различных областях — от архитектуры Qt модель/представление до мощного графического процессора 2D. Авторы вооружают читателей беспрецедентно глубокими знаниями модели событий и системы компоновки Qt.

На реалистических примерах они описывают высокоэффективные методы во всех областях — от разработки основных элементов графического пользовательского интерфейса до передовых методов интеграции с базой данных и XML. Каждая глава содержит полностью обновленный материал.

Данное издание:

• Включает новые главы по архитектуре Qt 4 модель/представление и поддержке подключаемых модулей Qt, а также краткое введение в программирование встроенных систем на платформе Qtopia.

• Раскрывает все основные принципы программирования в среде Qt — от создания диалоговых и других окон до реализации функциональности приложений.

• Знакомит с передовыми методами управления компоновкой виджетов и обработкой событий.

• Показывает, как можно с наибольшей эффективностью использовать новые программные интерфейсы Qt 4, в частности мощный графический процессор 2D и новые простые в применении классы—контейнеры.

• Представляет передовые методы Qt 4, которых нет ни в одной книге: от создания подключаемых модулей, расширяющих возможности Qt, и приложений, до применения «родных» для конкретной платформы программных интерфейсов.

• Содержит приложение с подробным введением в программирование на С++ в среде Qt для опытных Java—разработчиков.


Жасмин Бланшет (Jasmine Blanchette) — менеджер по документированию и старший разработчик компании «Trolltech» с 2001 года. Он является редактором «Qt Quarterly», информационного бюллетеня компании «Trolltech», и соавтором книги «Qt 3: программирование GUI на С++».

Марк Саммерфилд (Mark Summerfield) — независимый преподаватель и консультант по С++, Qt и Python. Он работал менеджером по документированию в компании «Trolltech» на протяжении трех лет. Марк является соавтором книги «Qt 3: программирование GUI на С++».

QT 4: программирование GUI на С++ - читать онлайн бесплатно полную версию (весь текст целиком)

QT 4: программирование GUI на С++ - читать книгу онлайн бесплатно, автор Жасмин Бланшет
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Мы связываем сигнал текстового документа contentsChanged() c закрытым слотом documentWasModified(). Этот слот просто вызывает setWindowModified(true).

Наконец, мы устанавливаем атрибут Qt::WA_DeleteOnClose для предотвращения утечек памяти при закрытии пользователем окна Editor.

После выпрлнения конструктора мы ожидаем вызова либо функции newFile(), либо функции open().

01 void Editor::newFile()

02 {

03 static int documentNumber = 1;

04 curFile = tr("document%1.txt").arg(documentNumber);

05 setWindowTitle(curFile + "[*]");

06 action->setText(curFile);

07 isUntitled = true;

08 ++documentNumber;

09 }

Функция newFile() генерирует для нового документа имя типа document1.txt. Этот программный код помещен в функцию newFile(), a не в конструктор, поскольку мы не хотим использовать числа при вызове функции open() для открытия существующего документа во вновь созданном редакторе Editor. Поскольку переменная documentNumber объявлена как статическая, она совместно используется всеми экземплярами Editor.

Маркер «[*]» в заголовке окна указывает место, где мы хотим выдавать звездочку при несохраненных изменениях файла для платформ, отличных от Mac OS X. Мы рассматривали этот маркер в главе 3.

01 bool Editor::open()

02 {

03 QString fileName = QFileDialog::getOpenFileName(

04 this, tr("Open"), fileFilters);

05 if(fileName.isEmpty())

06 return false;

07 return openFile(fileName);

08 }

Функция open() пытается открыть сущеcтвующий файл при помощи функции openFile().

01 bool Editor::save()

02 {

03 if (isUntitled) {

04 return saveAs();

05 } else {

06 return saveFile(curFile);

07 }

Функция save() используёт переменную isUntitled для определения вида вызываемой функции saveFile() или saveAs().

01 void Editor::closeEvent(QCloseEvent *event)

02 {

03 if (okToContinue()) {

04 event->accept();

05 } else {

06 event->ignore();

07 }

08 }

Функция closeEvent() переопределяется, чтобы разрешить пользователю сохранить несохраненные изменения. Вся логика содержится в функции okToContinue(), которая выводит сообщение «Do you want to save your changes?» (Сохранить изменения?). Если функция okToContinue() возвращает true, мы обрабатывам событие закрытия; в противном случае мы «игнорируем» его и окно оставляем прежним.

01 void Editor::setCurrentFile(const QString &fileName)

02 {

03 curFile = fileName;

04 isUntitled = false;

05 action->setText(strippedName(curFile));

06 document()->setModified(false);

07 setWindowTitle(strippedName(curFile) + "[*]");

08 setWindowModified(false);

09 }

Функция setCurrentFile() вызывается из openFile() и saveFile() для обновления переменных curFile и isUntitled, установки текста заголовка окна и пункта меню, а также для установки значения флажка модификации документа на false. Всякий раз, когда пользователь изменяет текст в редакторе, объект базового класса QTextDocument генерирует сигнал contentsChanged() и устанавливает свой внутренний флажок модификации на значение true.

01 QSize Editor::sizeHint() const

02 {

03 return QSize(72 * fontMetrics().width('x'),

04 25 * fontMetrics().lineSpacing());

05 }

Функция sizeHint() возвращает размер, рассчитанный на основе ширины буквы «x» и высоты строки текста. QWorkspace использует идеальный размер в качестве начального размера окна.

Ниже приводится файл main.cpp MDI—приложения Editor:

01 #include

02 #include "mainwindow.h"

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

04 {

05 QApplication app(argc, argv);

06 QStringList args = app.arguments();

07 MainWindow mainWin;

08 if (args.count() > 1) {

09 for (int i = 1; i < args.count(); ++i)

10 mainWin.openFile(args[i]);

11 } else {

12 mainWin.newFile();

13 }

14 mainWin.show();

15 return app.exec();

16 }

Еслй пользователь задает в командной строке какие-нибудь файлы, мы пытаемся их загрузить, в противном случае мы начинаем работу с пустым документом. Такие характерные для Qt опции командной строки, как —style и —font (стиль и шрифт), автоматически убираются из списка аргументов конструктором QApplication. Поэтому, если мы напишем в командной строке

mdieditor -style motif readme.txt

QApplication::arguments() возвратит QStringList с двумя элементами («mdieditor» и «readme.txt»), а МDI—приложение Editor запустится с документом readme.txt.

Интерфейс MDI представляет собой один из способов работы одновременно со многими документами. В системе MacOS Х более предпочтителен подход, связанный с применением нескольких окон верхнего уровня. Этот подход рассматривается в разделе «Работа со многими документами» главы З.

Глава 7. Обработка событий

События генерируются оконной системой или Qt в ответ на различные действия - фото 97

События генерируются оконной системой или Qt в ответ на различные действия. Когда пользователь нажимает или отпускает клавишу или кнопку мышки, генерируется событие клавиши клавиатуры или кнопки мышки; когда окно впервые выводится на экран, генерируется событие рисования, указывая появившемуся окну на необходимость его прорисовки. Большинство событий генерируются в ответ на действия пользователя, но некоторые события, например, события таймера, генерируются самой системой и не зависят от действий пользователя.

При программировании в Qt нам редко приходится думать о событиях, поскольку виджеты Qt сами генерируют сигналы в ответ на любое существенное событие. События становятся полезными при создании нами своих сооственных виджетов, или когда мы хотим модифицировать поведение существующих виджетов Qt.

События не следует путать с сигналами. Как правило, сигналы полезны при uспользовании виджета, в то время как события полезны при реализации виджета. Например, при применении кнопки QPushButton мы больше заинтересованы в ее сигнале clicked(), чем в обработке низкоуровневых событий мышки или клавиатуры, сгенерировавших этот сигнал. Но если мы реализуем такой класс, как QPushButton, нам необходимо написать программный код для обработки событий мышки и клавиатуры и при необходимости сгенерировать сигнал clicked().

Переопределение обработчиков событий

В Qt событие (event) — это объект, производный от QEvent. Qt обрабатывает более сотни типов событий, каждое из которых идентифицируется определенным значением перечисления. Например, QEvent::type() возвращает QEvent::MouseButtonPress для событий нажатия кнопки мышки.

Для событий многих типов недостаточно тех данных, которые могут храниться в простом объекте QEvent: например, для событий нажатия кнопки мышки необходимо иметь информацию о том, какая кнопка мышки привела к возникновению данного события, а также о том, где находился курсор мышкй в момент возникновения события. Эта дополнительная информация хранится в определенных подклассах QEvent, например, в QMouseEvent.

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Жасмин Бланшет читать все книги автора по порядку

Жасмин Бланшет - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




QT 4: программирование GUI на С++ отзывы


Отзывы читателей о книге QT 4: программирование GUI на С++, автор: Жасмин Бланшет. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x