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


Авторские права

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

Здесь можно скачать бесплатно "Жасмин Бланшет - QT 4: программирование GUI на С++" в формате fb2, epub, txt, doc, pdf. Жанр: Программирование, издательство КУДИЦ-ПРЕСС, год 2007. Так же Вы можете читать книгу онлайн без регистрации и SMS на сайте LibFox.Ru (ЛибФокс) или прочесть описание и ознакомиться с отзывами.
Жасмин Бланшет - QT 4: программирование GUI на С++
Рейтинг:
Название:
QT 4: программирование GUI на С++
Издательство:
КУДИЦ-ПРЕСС
Год:
2007
ISBN:
978-5-91136-038-2
Скачать:

99Пожалуйста дождитесь своей очереди, идёт подготовка вашей ссылки для скачивания...

Скачивание начинается... Если скачивание не началось автоматически, пожалуйста нажмите на эту ссылку.

Вы автор?
Жалоба
Все книги на сайте размещаются его пользователями. Приносим свои глубочайшие извинения, если Ваша книга была опубликована без Вашего на то согласия.
Напишите нам, и мы в срочном порядке примем меры.

Как получить книгу?
Оплатили, но не знаете что делать дальше? Инструкция.

Описание книги "QT 4: программирование GUI на С++"

Описание и краткое содержание "QT 4: программирование GUI на С++" читать бесплатно онлайн.



Единственное официальное руководстро по практическому программированию в среде 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 на С++».






qRegisterMetaTypeStreamOperators<BusinessCard>("BusinessCard");

В данной главе основное внимание было уделено контейнерам Qt, а также классам QString, QByteArray и QVariant. Кроме этих классов Qt имеет несколько других контейнеров. Один из них — QPair<T1, T2>, который просто хранит два значения и аналогичен классу std::pair<T1, T2>. Еще одним контейнером является QBitArray, который мы будем использовать в первом разделе главы 19. Наконец, имеется контейнер QVarLengthArray<T, Prealloc> — низкоуровневая альтернатива вектору QVector<T>. Поскольку он заранее выделяет память в стеке и не допускает неявное совместное использование, накладные расходы у него меньше, чем у вектора QVector<T>, что делает его более подходящим в напряженных циклах.

Алгоритмы Qt, включая несколько не рассмотренных здесь, например qCopyBackward() и qEqual(), описаны в документации Qt, которую можно найти по адресу http://doc.trolltech.com/4.1/algorithms.html. Более подробное описание контейнеров Qt, в том числе информацию об их временных и объемных характеристиках, можно найти на странице http://doc.trolltech.com/4.1/containers.html.

Глава 12. Ввод—вывод

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

• QFile — получает доступ к файлам, находящимся в локальной файловой системе или внедренным в исполняемый модуль,

• QTemporaryFile — создает временные файлы в локальной файловой системе и получает доступ к ним,

• QBuffer — считывает или записывает данные в QByteArray,

• QProcess — запускает внешние программы и обеспечивает связь между процессами,

• QTcpSocket — передает поток данных по сети, используя протокол TCP,

• QUdpSocket — передает и принимает из сети дейтаграммы UDP.

QProcess, QTcpSocket и QUdpSocket являются последовательными устройствами, т.е. они позволяют получить доступ к данным только один раз, начиная с первого байта и последовательно продвигаясь к последнему байту. QFile, QTemporaryFile и QBuffer являются устройствами произвольного доступа и позволяют считывать байты многократно из любой позиции; они используют функцию QIODevice::seek() для изменения положения указателя файла.

Кроме этих устройств Qt предоставляет два класса высокоуровневых потоков данных, которые можно использовать для чтения и записи на любое устройство ввода—вывода: QDataStream для двоичных данных и QTextStream для текста. Эти классы учитывают такие аспекты, как порядок байтов и кодировка текста, позволяя работающим на разных платформах и в разных странах приложениям Qt считывать и записывать файлы друг друга. Это делает классы Qt по вводу—выводу более удобными, чем соответствующие классы стандартного С++, при использовании которых решать подобные проблемы приходится прикладному программисту.

QFile позволяет легко получать доступ к отдельным файлам, независимо от того, располагаются они в файловой системе или оказываются внедренными в исполняемый модуль приложения как ресурсы. Для приложений, которым приходится работать с целыми наборами файлов, в Qt предусмотрены классы QDir и QFileInfo, которые позволяют работать с каталогами и получать сведения о файлах, расположенных внутри каталогов.

Класс QProcess позволяет нам запускать внешние программы и устанавливать связь с ними через стандартные каналы ввода, вывода и ошибок (cin, cout и cerr). Мы можем устанавливать переменные среды и рабочий каталог, которые будут использоваться внешним приложением. По умолчанию связь с процессом осуществляется в асинхронном режиме (без блокировок), но все же остается возможной блокировка определенных операций.

Работа с сетью, а также чтение и запись документов XML настолько важные темы, что будут рассмотрены отдельно в главах 14 и 15, специально им посвященным.

Чтение и запись двоичных данных

Самый простой способ загрузки и сохранения двоичных данных в Qt — получить экземпляр класса QFile, открыть файл и получить к нему доступ через объект QDataStream. QDataStream обеспечивает независимый от платформы формат памяти, который поддерживает такие базовые типы С++, как int и double, и многие типы данных Qt, включая QByteArray, QFont, QImage, QPixmap, QString и QVariant, а также классы—контейнеры Qt, например QList<T> и QMap<K, T>.

Ниже показано, как можно сохранить целый тип QImage и QMap<QString, QColor> в файле с именем facts.dat:

QImage image("philip.png");

QMap<QString, QColor> map;

map.insert("red", Qt::red);

map.insert("green", Qt::green);

map.insert("blue", Qt::blue);

QFile file("facts.dat");

if (!file.open(QIODevice::WriteOnly)) {

cerr << "Cannot open file for writing: "

<< qPrintable(file.errorString()) << endl;

return;

}

QDataStream out(&file);

out.setVersion(QDataStream::Qt_4_1);

out << quint32(0x12345678) << image << map;

Если не удается открыть файл, мы информируем об этом пользователя и возвращаем управление. Макрос qPrintable() возвращает const char *, принимая QString. (Можно было бы поступить по-другому и использовать функцию QString::toStdString(), возвращающую тип std::string, для которого в <iostream> предусмотрена соответствующая перегрузка оператора <<.)

При успешном открытии файла мы создаем QDataStream и определяем его номер версии. Номер версии — это целое число, влияющее на представление в Qt типов данных (базовые типы данных С++ всегда представляются одинаково). В Qt 4.1 большинство сложных форматов имеют версию 7. Мы можем либо жестко закодировать в программе константу 7, либо использовать символическое имя QDataStream::Qt_4_1.

Чтобы обеспечить представление значения 0x12345678 в виде 32-битового целого числа без знака на всех платформах, мы приводим его тип к quint32 — типу данных, размер которого всегда равен точно 32 битам. Для обеспечения функциональной совместимости QDataStream по умолчанию использует прямой порядок байтов (big-endian); это можно изменить, вызывая функцию setByteOrder().

Нам не надо явно закрывать файл, поскольку это делается автоматически, когда переменная типа QFile выходит из области видимости. Если необходимо убедиться в том, что данные действительно записаны, мы можем вызвать функцию flush() и проверить возвращаемое значение (true при успешном завершении).

Программный код для чтения данных является зеркальным отражением кода, используемого нами для записи данных:

quint32 n;

QImage image;

QMap<QString, QColor> map;

QFile file("facts.dat");

if (!file.open(QIODevice::ReadOnly)) {

cerr << "Cannot open file for reading: "

<< qPrintable(file.errorString()) << endl;

return;

}

QDataStream in(&file);

in.setVersion(QDataStream::Qt_4_1);

in >> n >> image >> map;

При чтении используется та же самая версия QDataStream, которую мы использовали при записи. Это условие должно выполняться всегда. Жестко кодируя номер версии, мы гарантируем успешное чтение и запись данных приложением (при условии компиляции приложения с версией Qt 4.1 или более поздней версией Qt).

QDataStream так хранит данные, что мы сможем их считать обратно без особых усилий. Например, QByteArray представляется в виде структуры с 32-битовым счетчиком байтов, за которым идут сами байты. Используя функции readRawBytes() и writeRawBytes(), QDataStream может также применяться для чтения и записи неформатированных байтов, не имеющих заголовка в виде счетчика байтов.

Обрабатывать ошибки при чтении данных из потока QDataStream достаточно просто. Этот поток данных имеет функцию status(), возвращающую значения QDataStream::Ok, QDataStream::ReadPastEnd или QDataStream::ReadCorruptData. При возникновении ошибки оператор >> всегда считывает нулевые или пустые значения. Это означает, что во многих случаях можно просто считывать файл целиком, не беспокоясь о возможных ошибках, и в конце удостовериться в успешном выполнении чтения, проверив получаемое функцией status() значение.

QDataStream работает с разнообразными типами данных С++ и Qt; полный их список доступен в сети Интернет по адресу http://doc.trolltech.com/4.1/datastreamformat.html. Кроме того, можно добавить поддержку своих собственных пользовательских типов, перегружая операторы << и >>. Ниже приводится определение пользовательского типа данных, которое может быть использовано совместно с QDataStream:


На Facebook В Твиттере В Instagram В Одноклассниках Мы Вконтакте
Подписывайтесь на наши страницы в социальных сетях.
Будьте в курсе последних книжных новинок, комментируйте, обсуждайте. Мы ждём Вас!

Похожие книги на "QT 4: программирование GUI на С++"

Книги похожие на "QT 4: программирование GUI на С++" читать онлайн или скачать бесплатно полные версии.


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

Все книги автора Жасмин Бланшет

Жасмин Бланшет - все книги автора в одном месте на сайте онлайн библиотеки LibFox.

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

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

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

А что Вы думаете о книге? Оставьте Ваш отзыв.