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

Здесь есть возможность читать онлайн «Жасмин Бланшет - QT 4 - программирование GUI на С++» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Город: Москва, Год выпуска: 2007, ISBN: 2007, Издательство: КУДИЦ-ПРЕСС, Жанр: Программирование, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

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 на С++».

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

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «QT 4: программирование GUI на С++», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

08 if (ascending[i]) {

09 return row1[column] < row2[column];

10 } else {

11 return row1[column] > row2[column];

12 }

13 }

14 }

15 }

16 return false;

17 }

Этот оператор возвращает true, если первая строка меньше второй; в противном случае он возвращает false. Функция qStableSort() для выполнения сортировки использует результат этой функции.

Массивы keys и ascending объекта SpreadsheetCompare заполняются при работе функции MainWindow::sort() (она приводится в главе 2). Каждый ключ содержит индекс столбца или имеет значение —1 («None» — нет значения).

Мы сравниваем значения соответствующих ячеек двух строк, учитывая порядок ключей сортировки. Как только оказывается, что они различны, мы возвращаем соответствующее значение: true или false. Если все значения оказываются равными, мы возвращаем false. При совпадении значений функция qStableSort() сохраняет порядок до сортировки; если строка row1 располагалась первоначально перед строкой row2 и ни одна из них не оказалась «меньше другой», то в результате строка row1 по-прежнему будет предшествовать строке row2. Именно этим функция qStableSort() отличается от своего нестабильного «родственника» qSort().

Теперь мы закончили класс Spreadsheet. В следующем разделе мы рассмотрим класс Cell. Этот класс применяется для хранения формул ячеек и обеспечивает переопределение функции QTableWidgetltem::data(), которая вызывается в Spreadsheet через функцию QTableWidgetItem::text() для отображения результата вычисления формулы ячейки.

Создание подкласса QTableWidgetltem

Класс Cell наследует QTableWidgetltem. Этот класс спроектирован для удобства работы с Spreadsheet, но он не имеет никаких особых связей с данным классом электронной таблицы и теоретически может применяться для любого объекта QTableWidget. Ниже приводится заголовочный файл:

01 #ifndef CELL_H

02 #define CELL_H

03 #include

04 class Cell : public QTableWidgetltem

05 {

06 public:

07 Cell();

08 QTableWidgetltem *clone() const;

09 void setData(int role, const QVariant &value);

10 QVariant data(int role) const;

11 void setFormula(const QString &formula);

12 QString formula() const;

13 void setDirty();

14 private:

15 QVariant value() const;

16 QVariant evalExpression(const QString &str, int &pos) const;

17 QVariant evalTerm(const QString &str, int &pos) const;

18 QVariant evalFactor(const QString &str, int &pos) const;

19 mutable QVariant cachedValue;

20 mutable bool cacheIsDirty;

21 };

22 #endif

Класс Cell расширяет QTableWidgetltem, добавляя две закрытые переменные:

• переменная cachedValue кэширует значение ячейки в виде значения типа QVariant;

• переменная cacheIsDirty принимает значение true, если кэшируемое значение устарело.

Мы используем QVariant, поскольку некоторые ячейки имеют тип числа двойной точности double, а другие имеют тип строки QString.

При объявлении переменных cachedValue и cacheIsDirty используется ключевое слово mutable языка С++. Это позволяет нам модифицировать эти переменные в функциях с модификатором const. Мы могли бы поступить по-другому и заново выполнять расчет при каждом вызове функции text(), но эта неэффективность будет не оправдана.

Следует отметить, что в определении класса не используется макрос Q_OBJECT. Класс Cell является «чистым» классом С++, который не имеет сигналов и слотов. На самом деле из-за того, что QTableWidgetltem не является наследником QObject, мы не можем использовать в Cell как таковые сигналы и слоты. Классы элементов Qt не наследуют QObject, чтобы свести к минимуму затраты на их обработку. Если сигналы и слоты необходимы, они могут быть реализованы в виджете, содержащем элементы, или (в виде исключения) при помощи множественного наследования класса QObject.

Теперь мы перейдем к написанию cell.cpp:

01 #include

02 #include "cell.h"

03 Cell::Cell()

04 {

05 setDirty();

06 }

В конструкторе нам необходимо установить признак «dirty» («грязный») только для кэша. Передавать родительский объект нет необходимости; когда делается вставка ячейки в QTableWidget с помощью setItem(), QTableWidget автоматически станет ее владельцем.

Каждый элемент QTableWidgetltem может иметь некоторые данные — до одного типа QVariant на каждую «роль» данных. Наиболее распространенными ролями являются Qt::EditRole и Qt::DisplayRole (роль правки и роль отображения). Роль правки используется для данных, которые должны редактироваться, а роль отображения — для данных, которые должны отображаться на экране. Часто обе роли используются для одних и тех же данных, однако в Cell роль правки соответствует формуле ячейки, а роль отображения — значению ячейки (результату вычисления формулы).

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

Интервал:

Закладка:

Сделать

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

Представляем Вашему вниманию похожие книги на «QT 4: программирование GUI на С++» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Бертрис Смолл - Дикарка Жасмин
Бертрис Смолл
Георгий Семенов - Жасмин в тени забора
Георгий Семенов
Жасмин Гиллори - Свадебное свидание
Жасмин Гиллори
Жасмин Майер - Онлайн
Жасмин Майер
Отзывы о книге «QT 4: программирование GUI на С++»

Обсуждение, отзывы о книге «QT 4: программирование GUI на С++» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x