Жасмин Бланшет - 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 на С++ - читать книгу онлайн бесплатно, автор Жасмин Бланшет
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

14 private:

15 static QString toHtml(const QString &plainText);

16 static QString toCsv(const QString &plainText);

17 QString text(int row, int column) const;

18 QString rangeAsPlainText() const;

19 const QTableWidget *myTableWidget;

20 QTableWidgetSelectionRange myRange;

21 QStringList myFormats;

22 };

Вместо реальных данных мы храним объект QTableWidgetSelectionRange, который определяет область переносимых ячеек и сохраняет указатель на QTableWidget. Функции formats() и retrieveData() класса QMimeData переопределяются.

01 TableMimeData::TableMimeData(const QTableWidget *tableWidget,

02 const QTableWidgetSelectionRange &range)

03 {

04 myTableWidget = tableWidget;

05 myRange = range;

06 myFormats << "text/csv" << "text/html" << "text/plain";

07 }

В конструкторе мы инициализируем закрытые переменные.

01 QStringList TableMimeData::formats() const

02 {

03 return myFormats;

04 }

Функция formats() возвращает список MIME—типов, находящихся в объекте MIME—данных. Последовательность форматов обычно несущественна, однако на практике желательно первыми указывать «лучшие» форматы. Приложения, поддерживающие несколько форматов, иногда будут использовать первый подходящий.

01 QVariant TableMimeData::retrieveData(const QString &format,

02 QVariant::Type preferredType) const

03 {

04 if (format == "text/plain") {

05 return rangeAsPlainText();

06 } else if (format =="text/csv") {

07 return toCsv(rangeAsPlainText()); }

08 else if (format == "text/html") {

09 return toHtml(rangeAsPlainText());

10 } else {

11 return QMimeData::retrieveData(format, preferredType);

12 }

13 }

Функция retrieveData() возвращает данные для заданного MIME—типа в виде объекта QVariant. Параметр format обычно содержит одну из строк, возвращенных функцией formats(), однако нам не следует на это рассчитывать, поскольку не все приложения проверяют MIME—тип на соответствие форматам функции formats(). Предусмотренные в классе QMimeData функции получения данных text(), html(), urls(), imageData(), colorData() и data() реализуются с помощью функции retrieveData().

Параметр preferredType определяет тип, который следует поместить в объект QVariant. Здесь мы его игнорируем и рассчитываем на то, что QMimeData преобразует при необходимости возвращенное значение в требуемый тип.

01 void MyTableWidget::dropEvent(QDropEvent *event)

02 {

03 const TableMimeData *tableData =

04 qobject_cast(event->mimeData());

05 if (tableData) {

06 const QTableWidget *otherTable = tableData->tableWidget();

07 QTableWidgetSelectionRange otherRange = tableData->range();

08 …

09 event->acceptProposedAction();

10 } else if (event->mimeData()->hasFormat("text/csv")) {

11 QByteArray csvData = event->mimeData()->data("text/csv");

12 QString csvText = QString::fromUtf8(csVData);

13 …

14 event->acceptProposedAction();

15 } else if (event->mimeData()->hasFormat("text/plain")) {

16 QString plainText = event->mimeData()->text();

17 …

18 event->acceptProposedAction();

19 }

20 QTableWidget::mouseMoveEvent(event);

21 }

Функция dropEvent() аналогична функции с тем же названием, которую мы рассматривали ранее в данном разделе, но на этот раз мы ее оптимизируем, делая вначале проверку возможности приведения типа QMimeData в тип TableMimeData. Если qobject_cast() срабатывает, это значит, что перенос был инициирован виджетом MyTableWidget, расположенным в том же самом приложении, и мы можем получить непосредственный доступ к данным таблицы вместо того, чтобы пробираться сквозь программный интерфейс класса QMimeData. Если приведение типов оказывается неудачным, мы извлекаем данные стандартным способом.

В этом примере мы кодировали CSV—текст, используя кодировку UTF-8. Если бы мы хотели быть уверенными в применении правильной кодировки, мы могли бы использовать параметр charset в MIME—типе text/plain для явного задания типа кодировки. Ниже приводится несколько примеров:

text/plain; charset=US-ASCII

text/plain; charset=ISO-8859-1

text/plain; charset=Shift_JIS

text/plain; charset=UTF-8

Работа с буфером обмена

Большинство приложений тем или иным образом используют встроенные в Qt средства работы с буфером обмена. Например, класс QTextEdit обеспечивает поддержку слотов cut(), copy() и paste(), а также клавиш быстрого вызова команд, и поэтому дополнительное программирование почти (или совсем) не требуется.

При создании нами собственных классов мы можем осуществлять доступ к буферу обмена с помощью функции QApplication::clipboard(), которая возвращает указатель на объект приложения QClipboard. Обработка системного буфера обмена выполняется просто: вызывайте функции setText(), setImage() или setPixmap() для помещения данных в буфер обмена, и функции text(), image() или pixmap() для считывания данных из буфера обмена. Мы уже приводили примеры работы с буфером обмена в приложении Электронная таблица из главы 4.

Для некоторых приложений может оказаться недостаточно встроенных функциональных возможностей. Например, нам могут потребоваться данные, которые не являются просто текстом или изображением, или мы захотим обеспечить работу с многими различными форматами данных с целью достижения максимальной совместимости с другими приложениями. Эта проблема очень напоминает ту, с которой мы столкнулись при обеспечении механизма «drag-and-drop», и решение также будет аналогичным: мы можем создать подкласс QMimeData и переопределить несколько виртуальных функций.

Если наше приложение поддерживает механизм «drag-and-drop» через пользовательский подкласс QMimeData, мы можем просто повторно использовать пользовательский подкласс QMimeData и помещать его в буфер обмена, используя функцию setMimeData(). Для получения данных мы можем вызвать функцию mimeData() для буфера обмена.

В системе X11, как правило, можно вставлять выделенные объекты нажатием средней кнопки мышки, которая имеет три кнопки. Это делается путем применения отдельной «выделенной области» буфера обмена. Если вам нужно,чтобы ваш виджет поддерживал такую операцию буфера обмена вместе со стандартными операциями, вы должны передавать QClipboard::Selection в качестве дополнительного аргумента в различных вызовах операций буфера обмена. Например, ниже приводится возможная реализация функции mouseReleaseEvent() текстового редактора, поддерживающего вставку по нажатии средней кнопки мышки.

01 void MyTextEditor::mouseReleaseEvent(QMouseEvent *event)

02 {

03 QClipboard *clipboard = QApplication::clipboard();

04 if (event->button() == Qt::MidButton

05 && clipboard->supportsSelection()) {

06 QString text = clipboard->text(QClipboard::Selection);

07 pasteText(text);

08 }

09 }

В системе X11 функция supportsSelection() возвращает true. На других платформах она возврашает false.

Если мы хотим получать уведомления о каждом изменении содержимого буфера обмена, мы можем соединить сигнал QClipboard::dataChanged() с пользовательским слотом.

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

Интервал:

Закладка:

Сделать


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

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




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


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


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

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